C语言实现循环队列
2017-01-16 23:00
411 查看
循环队列常用于已知数据存储的大致数量的场合,使用之前需要事先申请好空间,使用期间不得释放。
它的数据结构可如下表示:
基本的入队和出队函数:
检测验证:
结果如下:
它的数据结构可如下表示:
#define MAXQSIZE 100 /*设置队列可以存储99个数据, 因为为了区别队满有一个不能用*/ typedef int QElemType; /*循环队列数据结构*/ typedef struct { QElemType *base; int front; int rear; }SqQueue,*SqQueuePtr; SqQueuePtr InitQueue_Sq(); int Push_Sq(SqQueuePtr Q,QElemType data); QElemType DeSqueue_Sq(SqQueuePtr Q); int QueueLength_Sq(SqQueuePtr Q);
基本的入队和出队函数:
/*功能:初始化一个循环队列 返回值:指向循环队列的一个指针 */ SqQueuePtr InitQueue_Sq() { SqQueuePtr Q; Q=(SqQueuePtr)malloc(sizeof(SqQueue));//为队列结构分配内存 Q->base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType));//为队列的数据存储空间分配内存 if(Q->base==NULL) { printf("there is not enough memory aviable\n"); exit(0); } else Q->front=0; Q->rear=0; return Q; } /*功能:将数据压入堆栈 返回值:0:压入成功 */ int Push_Sq(SqQueuePtr Q,QElemType data) { if((Q->rear+1)%MAXQSIZE==Q->front)//判断队列是否已经满了 { printf("the queue is full\n"); exit(0); } else Q->base[Q->rear]=data;//数据存入队列 Q->rear=(Q->rear+1)%MAXQSIZE;//队尾后移 return 0; } /*功能:出队,数据从队头出队 返回值:队头的数据 */ QElemType DeSqueue_Sq(SqQueuePtr Q) { QElemType data; if(Q->front==Q->rear)//判断队列是否是空的 { printf("the queue is empty\n"); exit(0); } else data=Q->base[Q->front];//获取队头的数据 Q->front=(Q->front+1)%MAXQSIZE;//队头后移一位 return data; } /*功能:获得队列当前存储的长度 返回值:当前长度值 */ int QueueLength_Sq(SqQueuePtr Q) { return (Q->rear-Q->front+MAXQSIZE)%MAXQSIZE; }
检测验证:
void main() { /*队列的测试*/ SqQueuePtr Q; QElemType data,dat; int length=0,i; data=10; Q=InitQueue_Sq(); printf("push data to queue\n"); while(data>0) { printf("%d\t",data); Push_Sq(Q,data); data--; } printf("\n"); length=QueueLength_Sq(Q); printf("the length of queue is %d\n",length); printf("the datas go out of queue is\n"); for(i=0;i<length;i++) { dat=DeSqueue_Sq(Q); printf(" %d\t",dat); } printf("\n"); }
结果如下:
相关文章推荐
- 顺序队列(循环队列)基本操作实现 C语言
- 循环队列的实现(C语言)
- c语言实现循环队列
- 数据结构:循环队列(C语言实现)
- 静态数组实现循环队列 c语言
- c语言用简单数组实现循环队列
- 数据结构:循环队列(C语言实现)
- 循环队列-顺序存储-c语言实现
- 数据结构之---C语言实现循环队列
- 链式循环队列实现(C语言)
- c语言循环线性队列的实现
- 数据结构:循环队列(C语言实现)
- C语言循环队列的表示与实现实例详解
- 数据结构基础(5)--C语言实现循环队列--静态
- 循环队列C语言实现
- 数据结构:循环队列(C语言实现)
- 数据结构:循环队列(C语言实现)
- 数据结构循环队列斐波拉契数列的实现(c语言)
- 循环队列-链式存储结构-c语言实现
- C语言实现循环队列基本操作(初始化、判断队空、入队、出队)