首页 > 代码库 > 迎战下周自考数据结构实践科目
迎战下周自考数据结构实践科目
编写完成重点数据结构和算法: 0.链表 1.栈 2.队列 3.二叉树数据结构和构建 4.前序中序后序遍历二叉树 5.构建哈夫曼树(最优二叉树) 6.图数据结构,图的深度优先遍历和广度优先遍历 7.拓扑排序 8.直接插入排序 9.希尔排序 10.希尔排序 11.冒泡排序 12.快速排序 13.直接选择排序 14.堆排序 15.归并排序 16.箱排序和基数排序 17.顺序查找,二分查找,索引顺序查找
// ExamTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "stdlib.h"/************************************************************************//* 栈数据结构 *//************************************************************************/#define StackSize 1024 //栈大小typedef char DataType;typedef struct { DataType data[StackSize]; //栈数组 int top; //栈顶索引}Stack;//清空栈void InitStack(Stack * s){ if(s == NULL) return; s->top = -1;}//判断是否满栈bool StatckEmpty(Stack* s){ if(s == NULL) return false; return s->top == StackSize-1;}//进栈void PushStack(Stack* s,DataType x){ if(s == NULL) return; if(StatckEmpty(s)) return; else { //规定当前入栈完成后指向当前的数据 s->top = s->top +1; s->data[s->top] = x; }}//出栈DataType PopStack(Stack* s){ if(s == NULL) { exit(0); } if(StatckEmpty(s)) { printf("Stack is empty .\n"); exit(0); } else { return s->data[s->top--]; //先用后减 }}//获取栈顶元素DataType GetTop(Stack* s){ if(s == NULL) { exit(0); } if(StatckEmpty(s)) { printf("Stack empty . \n"); exit(0); } else { return s->data[s->top]; }}/************************************************************************//* 队列数据结构(循环队列) *//************************************************************************/#define QUEUESIZE 1024typedef struct{ DataType data[QUEUESIZE]; //队列数组 int front; //队列头 int rear; //队列尾部}Queue; //初始化队列void InitQueue(Queue* q){ if(q == NULL) return; q->front = 0; q->rear = 0;}//判断栈是否为空bool QueueEmpty(Queue* q){ if(q == NULL) return false; else return q->front == q->rear;}//判断队列是否满bool QueueFull(Queue* q){ if(q == NULL) return false; return (q->rear + 1) % QUEUESIZE == q->front; }//入队列void InsertQueue(Queue* q,DataType x){ if(q == NULL) return; if(QueueFull(q)) { printf("Queue Full !\n"); } else { //队尾添加,队尾指向后面一个为空的 q->data[q->rear] = x; q->rear = (q->rear + 1) % QUEUESIZE; }}//出队列DataType DelQueue(Queue* q){ DataType x; if(QueueEmpty(q)) { printf("Queue is Empty \n"); exit(0); } else { x = q->data[q->front]; q->front = (q->front + 1) % QUEUESIZE; return x; }}//取队头元素DataType GetFrontData(Queue* q){ if(QueueEmpty(q)) { printf("queue is empty!\n"); exit(0); } else { return q->data[q->front]; }}//取队尾元素DataType GetRearData(Queue* q){ if(QueueEmpty(q)) { printf("queue is empty !"); exit(0); } else { return q->data[q->rear]; }}int _tmain(int argc, _TCHAR* argv[]){ return 0;}
迎战下周自考数据结构实践科目
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。