标签:
编写完成重点数据结构和算法: 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 1024 typedef 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; }
标签:
原文地址:http://www.cnblogs.com/sdnyzhl/p/4207446.html