其他分享
首页 > 其他分享> > 循环队列(上课用)

循环队列(上课用)

作者:互联网

源代码:

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100

typedef struct cycqueue
{
int data[MAXSIZE];
int front,rear; //声明队列的头指针和尾指针
}CycQue; //队列的数据类型


//初始化循环队列
void InitQueue(CycQue *CQ)
{
CQ->front=0;
CQ->rear=0;
}

//判断队列是否为空
int EmptyQueue(CycQue *CQ)
{
if(CQ->front==CQ->rear)
return 1; //队列为空,即为真
else
return 0;
}

 

//入队操作

int EnQueue(CycQue *CQ,int 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;

}

}

 

//出队操作

void OutQueue(CycQue *CQ)

{

if(EmptyQueue(CQ)) //首先判断队列是否为空

{

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

}

else

{

CQ->front=(CQ->front+1) % MAXSIZE;

}

}


//取栈顶元素

int GetHead(CycQue *CQ)

{

if(EmptyQueue(CQ))

return 0;

else

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

}

 

int main()

{

CycQue CQ;

CycQue *q=&CQ;

int i,n,e;

 

InitQueue(&CQ);

printf("\n向队列输入5个整数:\n");

for(i=0;i<5;i++)

{

scanf("%d",&n);

e=EnQueue(&CQ,n);

}

printf("\n出队顺序为:\n");
for(i=0;i<5;i++)

{

if(!EmptyQueue(&CQ)) //!代表非

{

n=GetHead(&CQ);

OutQueue(&CQ);

printf("%d ",n);

}

else

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

}

return 0;

}

运行结果:

 

 

标签:上课,CycQue,队列,int,循环,front,return,CQ
来源: https://www.cnblogs.com/duanqibo/p/16388031.html