循环队列的基本运算 下载本文

内容发布更新时间 : 2024/11/17 15:36:41星期一 下面是文章的全部内容请认真阅读。

/*循环队列的基本运算*/ #include #define maxsize 10 typedef int Datatype; typedef struct cycqueue {

Datatype data[maxsize]; /*循环队列大小*/ int front; /*队列头指针*/ int rear; /*队列尾指针*/ }CycQue;

void InitQueue(CycQue *CQ) /*队列实始化*/ {

CQ->front=0; CQ->rear=0; }

int EmptyQueue(CycQue *CQ) /*判队列空*/ {

if(CQ->rear==CQ->front) return 1; /*队列为空,返回1.*/ else

return 0; /*队列不为空,返回0.*/ }

int EnQueue(CycQue *CQ,Datatype x) /*入队列*/ {

if((CQ->rear+1)%maxsize==CQ->front) {

printf(\队列满!\\n\);/*队列满,入队失败。*/ return 0; } else {

CQ->rear=(CQ->rear+1)%maxsize; CQ->data[CQ->rear]=x;/*入队成功*/ return 1; } }

int OutQueue(CycQue *CQ) /*出队列*/ {

if(EmptyQueue(&CQ)) /*判断队列是否为空*/ {

printf(\队列空!\\n\);

return 0; } else {

CQ->front=(CQ->front+1)%maxsize;/*不为空,出队列。*/ return 1; } }

Datatype Gethead(CycQue *CQ) /*取队列首元素*/ {

if(EmptyQueue(&CQ)) /*判断队列是否为空*/ {

printf(\); return 0; } else {

return CQ->data[(CQ->front+1)%maxsize]; } }

main() {

CycQue CQ;

InitQueue(&CQ); int i,temp;

printf(\创建队列------\\n\); for(i=1;i

printf(\请输入第%d个队列元素:\\n\,i); scanf(\,&temp); EnQueue(&CQ,temp); }

printf(\输出队列------\\n\); while(!EmptyQueue(&CQ)) {

temp=Gethead(&CQ); OutQueue(&CQ);

printf(\,temp); } }