数据结构:队列(循环数组实现)

来源:互联网 发布:淘宝描述店铺怎么写 编辑:程序博客网 时间:2024/06/09 19:44
#include<stdio.h>#include<stdlib.h>#define ElementType int#define MAXSIZE 10//队列的循环数组实现方式typedef struct QueueRecord{int Front;int Rear;int Size;ElementType Array[MAXSIZE];}Queue; static Queue *q;void InitialQueue();int IsEmpty();int IsFull();void MakeEmpty();void Enqueue(ElementType);ElementType Dequeue();void error(char *);void InitialQueue(){int i;q=(Queue *)malloc(sizeof(Queue));q->Front = 0;q->Rear = -1;q->Size = 0;for(i=0;i<MAXSIZE;i++){q->Array[i]=0;}}int IsEmpty(){if(q->Size == 0){return 1;}return 0;}int IsFull(){if(q->Size == MAXSIZE){return 1;}return 0;}void MakeEmpty(){q->Front = 0;q->Rear = -1;q->Size = 0;}void Enqueue(ElementType e){if(IsFull()){error("queue has been full");return;}if(q->Rear < 9){q->Rear++;}else{q->Rear =0;}q->Array[q->Rear]=e;q->Size ++;}ElementType Dequeue(){ElementType e;if(IsEmpty()){error("queue has been empty");return 0;}q->Size--;e = q->Array[q->Front];if(q->Front == 9){q->Front = 0;}else{q->Front++;}return e;}void error(char *c){printf("%s",c);}void main(){int i;InitialQueue();//测试代码for(i=0;i<10;i++){Enqueue(i);}Dequeue();Enqueue(2);for(i=0;i<10;i++){printf("%d",Dequeue());}}