循环队列——队列的顺序表示和实现
2009-08-24 19:15
453 查看
上一篇说到队列的链式表示和实现,此次叙述队列的顺序表示和实现且是循环队列。
根据分析可知,在C语言中不能用动态分配的一维数组来实现循环队列。如果用户的应用程序中设有循环队列,则必须为它设定一个最大队列长度;若用户无法预知所用队列的最大程度,则宜采用链式存储。
根据分析可知,在C语言中不能用动态分配的一维数组来实现循环队列。如果用户的应用程序中设有循环队列,则必须为它设定一个最大队列长度;若用户无法预知所用队列的最大程度,则宜采用链式存储。
#define MAXQSIZE 100 //队列最大长度 typedef struct { QElemType *base; //初始化动态分配存储空间 int front; int rear; }SqQueue; //循环队列的基本操作的算法描述 Status InitQueue(SqQueue &Q) { //构造一个空队列 Q.base = (QElemType *) malloc(MAXQSIZE * sizeof(SqQueue)); if(!Q.base) exit(OVERFLOW); Q.front = Q.rear = 0; return OK; } int QueueLength(SqQueue Q) { //返回Q的元素个数,即队列的长度 return (Q.rear - Q.front + MAXQSIZE) % MAXQSIZE; } Status EnQueue(SqQueue &Q, QElemType e) { //出入元素e为Q新的队尾元素 if((Q.rear+1) % MAXQSIZE == Q.front) return ERROR; Q.base[Q.rear] = e; Q.rear = (Q.rear+1) % MAXQSIZE; return OK; } Status DeQueue(SqQueue &Q, QElemType &e) { //若队列不空,则删除Q的对头元素,用e返回其值,并返回OK; if(Q.front == Q.rear) return ERROR; e = Q.base[Q.front]; Q.front = (Q.front+1) % MAXQSIZE; return OK; }
相关文章推荐
- 循环队列———队列的顺序表示和实现
- 队列的顺序表示及实现,循环队列
- 3.4.3 循环队列--------队列的顺序表示与实现(1)
- 数据结构学习笔记 --- 队列(循环队列-队列的顺序表示和实现)
- 数据结构(5)——循环队列的顺序表示和实现
- 循环队列 队列的顺序表示和实现
- 循环队列——队列的顺序表示和实现
- 数据结构之队列的顺序表示及其实现(循环队列)
- 循环队列——队列的顺序表示与实现(c语言)
- 3.5.2循环队列——队列的顺序表示和实现
- 数据结构学习笔记 --- 队列(循环队列-队列的顺序表示和实现)
- 数据结构(5):循环队列——队列的顺序表示和实现
- 循环队列-队列的顺序表示和实现
- 循环队列详解及队列的顺序表示和实现
- 循环队列——队列的顺序表示和实现
- [数据结构][适用循环队列和非循环队列]顺序队列的实现。
- 数据结构中队列的实现(基于顺序表循环队列)
- 顺序循环队列的实现(c语言)
- Queue(1)Queue的顺序实现之循环队列版本
- 队列的顺序表示和实现