赞
踩
一.图示
二.基本操作
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;
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
四.结果展示
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。