#include <stdio.h>
#include <stdlib.h>
#define Maxsize 5
typedef struct CircleQueue{
int data[Maxsize];
int head;
int tail;
}*CircleQueuePtr;
CircleQueuePtr Initialqueue()
{
CircleQueuePtr resultPtr=(CircleQueuePtr)malloc(sizeof(struct CircleQueue));
resultPtr->head =0;
resultPtr->tail =0;\
return resultPtr;
}
CircleQueuePtr enqueue(CircleQueuePtr paraPtr,int paraValue)
{
if((paraPtr->tail +1)%Maxsize==paraPtr->head ){
printf("The queue is full\n");
return;
}
paraPtr->data[paraPtr->tail%Maxsize]=paraValue;
paraPtr->tail ++;//很重要
}
int dequeue(CircleQueuePtr paraPtr)
{
if(paraPtr->head ==paraPtr->tail ){
printf("NO elem\r\n");
return 0;
}
int resultValue=paraPtr->data [paraPtr->head%Maxsize];
paraPtr->head ++;//很重要
return resultValue;
}
void outputcirqueue(CircleQueuePtr paraPtr)
{
int i;
if(paraPtr->head ==paraPtr->tail ){
printf("NO elem\r\n");
return;
}
i=paraPtr->head;
for(i=paraPtr->head;i<paraPtr->tail;i++)
{
printf("%d ",paraPtr->data[i%Maxsize]);
}
printf("\n");
}
int main()
{
CircleQueuePtr tempQuePtr;
tempQuePtr=Initialqueue();
int j,elem;
for(j=1;j<Maxsize;j++)
{
printf("The %d elem is\n",j);
scanf("%d",&elem);
enqueue(tempQuePtr,elem);
}
printf("The queue is\n");
outputcirqueue(tempQuePtr);
int result1=dequeue(tempQuePtr);
printf("After deleting the queue now is\n");
outputcirqueue(tempQuePtr);
return 0;
}
测试:

该博客介绍了如何使用C语言实现一个环形队列,包括初始化、入队、出队和输出队列元素的功能。通过示例展示了环形队列的填充和删除过程,并提供了完整的主函数进行测试。
2万+

被折叠的 条评论
为什么被折叠?



