当前位置:   article > 正文

循环队列基本操作_循环队列入队操作

循环队列入队操作

一.图示

二.基本操作

1.初始化

  1. CircleQueuePtr Initialqueue()
  2. {
  3. CircleQueuePtr resultPtr=(CircleQueuePtr)malloc(sizeof(struct CircleQueue));
  4. resultPtr->head =0;
  5. resultPtr->tail =0;\
  6. return resultPtr;
  7. }

2.打印操作

  1. void outputcirqueue(CircleQueuePtr paraPtr)
  2. {
  3. int i;
  4. if(paraPtr->head ==paraPtr->tail ){
  5. printf("NO elem\r\n");
  6. return;
  7. }
  8. i=paraPtr->head;
  9. for(i=paraPtr->head;i<paraPtr->tail;i++)
  10. {
  11. printf("%d ",paraPtr->data[i%Maxsize]);
  12. }
  13. printf("\n");
  14. }

3.入队操作

  1. CircleQueuePtr enqueue(CircleQueuePtr paraPtr,int paraValue)
  2. {
  3. if((paraPtr->tail +1)%Maxsize==paraPtr->head ){
  4. printf("The queue is full\n");
  5. return;
  6. }
  7. paraPtr->data[paraPtr->tail%Maxsize]=paraValue;
  8. paraPtr->tail ++;//很重要
  9. }

4.出队操作

  1. int dequeue(CircleQueuePtr paraPtr)
  2. {
  3. if(paraPtr->head ==paraPtr->tail ){
  4. printf("NO elem\r\n");
  5. return 0;
  6. }
  7. int resultValue=paraPtr->data [paraPtr->head%Maxsize];
  8. paraPtr->head ++;//很重要
  9. return resultValue;
  10. }

三.完整代码

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define Maxsize 5
  4. typedef struct CircleQueue{
  5. int data[Maxsize];
  6. int head;
  7. int tail;
  8. }*CircleQueuePtr;
  9. CircleQueuePtr Initialqueue()
  10. {
  11. CircleQueuePtr resultPtr=(CircleQueuePtr)malloc(sizeof(struct CircleQueue));
  12. resultPtr->head =0;
  13. resultPtr->tail =0;\
  14. return resultPtr;
  15. }
  16. CircleQueuePtr enqueue(CircleQueuePtr paraPtr,int paraValue)
  17. {
  18. if((paraPtr->tail +1)%Maxsize==paraPtr->head ){
  19. printf("The queue is full\n");
  20. return;
  21. }
  22. paraPtr->data[paraPtr->tail%Maxsize]=paraValue;
  23. paraPtr->tail ++;//很重要
  24. }
  25. int dequeue(CircleQueuePtr paraPtr)
  26. {
  27. if(paraPtr->head ==paraPtr->tail ){
  28. printf("NO elem\r\n");
  29. return 0;
  30. }
  31. int resultValue=paraPtr->data [paraPtr->head%Maxsize];
  32. paraPtr->head ++;//很重要
  33. return resultValue;
  34. }
  35. void outputcirqueue(CircleQueuePtr paraPtr)
  36. {
  37. int i;
  38. if(paraPtr->head ==paraPtr->tail ){
  39. printf("NO elem\r\n");
  40. return;
  41. }
  42. i=paraPtr->head;
  43. for(i=paraPtr->head;i<paraPtr->tail;i++)
  44. {
  45. printf("%d ",paraPtr->data[i%Maxsize]);
  46. }
  47. printf("\n");
  48. }
  49. int main()
  50. {
  51. CircleQueuePtr tempQuePtr;
  52. tempQuePtr=Initialqueue();
  53. int j,elem;
  54. for(j=1;j<Maxsize;j++)
  55. {
  56. printf("The %d elem is\n",j);
  57. scanf("%d",&elem);
  58. enqueue(tempQuePtr,elem);
  59. }
  60. printf("The queue is\n");
  61. outputcirqueue(tempQuePtr);
  62. int result1=dequeue(tempQuePtr);
  63. printf("After deleting the queue now is\n");
  64. outputcirqueue(tempQuePtr);
  65. return 0;
  66. }

四.结果展示

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/867318
推荐阅读
相关标签
  

闽ICP备14008679号