一.图示
二.基本操作
1.初始化
CircleQueuePtr Initialqueue()
{
CircleQueuePtr resultPtr=(CircleQueuePtr)malloc(sizeof(struct CircleQueue));
resultPtr->head =0;
resultPtr->tail =0;\
return resultPtr;
}
2.打印操作
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");
}
3.入队操作
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 ++;//很重要
}
4.出队操作
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;
}
三.完整代码
#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;
}
四.结果展示