循环队列-简单

源程序:

//循环队列

#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");

//return 0;

}

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);

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

{

scanf("%d",&n);

e=EnQueue(&CQ,n);

}

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

{

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

{

n=GetHead(&CQ);

OutQueue(&CQ);

printf("%d ",n);

}

else

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

}

return 0;

}

 

posted @ 2021-04-29 09:55  bobo哥  阅读(113)  评论(0编辑  收藏  举报