顺序循环队列的基本操作
Posted -slz-2
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序循环队列的基本操作相关的知识,希望对你有一定的参考价值。
/*增设tag数据,区分队满队空*/ #include<stdio.h> #define MaxSize 10 typedef char ElemType; typedef struct { ElemType data[MaxSize]; int front,rear,tag; }SqQueue; bool InitQueue(SqQueue &q) { q.front=q.rear=0;//初始化队头队尾指针 q.tag=0; return true; } bool EmptyQueue(SqQueue q) { if(q.rear==q.front && q.tag==0) //队空的条件:首尾指针指向同一地址且标记tag为0 return true; return false; } bool EnQueue(SqQueue &q,ElemType e) { if(q.rear==q.front && q.tag==1) //队满的条件(首尾指针指向同一地址且标记tag为1) return false; q.data[q.rear++]=e; q.tag=1; return true; } bool OutQueue(SqQueue &q,ElemType &e) { if(q.rear==q.front && q.tag==0) //判空 return false; e=q.data[q.front++]; q.tag=0; return true; } bool HeadQueue(SqQueue q,ElemType &e) { if(q.rear==q.front && q.tag==0) return false; e=q.data[q.front]; return true; } void main() { SqQueue q; InitQueue(q); ElemType e; printf("The Queue is %s ",(EmptyQueue(q)?"Empty!":"UnEmpty!")); EnQueue(q,‘a‘); EnQueue(q,‘b‘); EnQueue(q,‘c‘); HeadQueue(q,e); printf("Queue_Head=%c ",e); OutQueue(q,e); HeadQueue(q,e); printf("Queue_Head=%c ",e); }
以上是关于顺序循环队列的基本操作的主要内容,如果未能解决你的问题,请参考以下文章