顺序循环队列表实现2————————————————————————————————作者:————————————————————————————————日期:3队列的基本概念队列也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系与线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作,在其另一端进行删除操作
队列中允许进行插入操作的一端称为队尾
允许进行删除操作的一端称为队头
队头和队尾分别由队头指针和队尾指针指示
队列的插入操作称为入队列,队列的删除操作称为出队列
最先入队列的元素总是最先出队列,所以队列也称为先进先出表
下图是一个一次向队列中插入数据元素a0,a1,a2,⋯
an-1后的示意图,其中,a0是当前队头数据元素,an-1是当前队尾的数据元素
队头队尾a0a1a2⋯⋯an-1front=0;/*定义初始化头指针下标值*/Q->count=0;/*定义初始化计数器值*/}(2)非空否QueueNotEmpty(SeqCQueueQ)intQueueNotEmpty(SeqCQueueQ)/*判断顺序循环队列Q非空否,非空返回1,否则返回0*/{if(Q
=0)return1;elsereturn0;}(3)入队列QueueAppend(SeqCQueue*Q,DataTypex)intQueueAppend(SeqCQueue*Q,DataTypex)/*把数据元素值x插入顺序循环队列Q的队尾,成功返回1,失败则返回0*/{6if(Q->count>0&&Q->rear==Q->front)/*判断队列满否*/{printf(“队列已满无法插入
\n”);return0;}else{Q->queue[Q->rear]=x;Q->rear=(Q->rear+1)%MaxQueueSize;Q->count+