第七周 项目一 建立顺序环形队列算法库

来源:互联网 发布:网络手机电视直播 编辑:程序博客网 时间:2024/05/16 16:10
  1. <pre class="cpp" name="code"></pre>Copyright (c)2017,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:第7周项目1 - 建立顺序环形队列算法库.cpp 作 者:安凯 完成日期:2017年10月23日 版 本 号:v1.0 问题描述:定义顺序环形队列存储结构,实现其基本运算,并完成测试。 输入描述:若干数据。 程序输出:若干数据。 */  
  2. <pre></pre>  
  3. <pre class="cpp" name="code"><pre class="cpp" name="code">//.h头文件  
  4. void InitQueue(SqQueue *&q);  //初始化顺序环形队列    
  5. void DestroyQueue(SqQueue *&q); //销毁顺序环形队列    
  6. bool QueueEmpty(SqQueue *q);  //判断顺序环形队列是否为空    
  7. int QueueLength(SqQueue *q);   //返回队列中元素个数,也称队列长度    
  8. bool enQueue(SqQueue *&q,ElemType e);   //进队    
  9. bool deQueue(SqQueue *&q,ElemType &e);  //出队  </pre><br>  
  10. <pre class="html" name="code">//队列函数实现  
  11. #include <stdio.h>    
  12. #include <malloc.h>    
  13. #include "sqqueue.h"    
  14.     
  15. void InitQueue(SqQueue *&q)  //初始化顺序环形队列    
  16. {    
  17.     q=(SqQueue *)malloc (sizeof(SqQueue));    
  18.     q->front=q->rear=0;    
  19. }    
  20. void DestroyQueue(SqQueue *&q) //销毁顺序环形队列    
  21. {    
  22.     free(q);    
  23. }    
  24. bool QueueEmpty(SqQueue *q)  //判断顺序环形队列是否为空    
  25. {    
  26.     return(q->front==q->rear);    
  27. }    
  28.     
  29.     
  30. int QueueLength(SqQueue *q)   //返回队列中元素个数,也称队列长度    
  31. {    
  32.     return (q->rear-q->front+MaxSize)%MaxSize;    
  33. }    
  34.     
  35. bool enQueue(SqQueue *&q,ElemType e)   //进队    
  36. {    
  37.     if ((q->rear+1)%MaxSize==q->front)  //队满上溢出    
  38.         return false;    
  39.     q->rear=(q->rear+1)%MaxSize;    
  40.     q->data[q->rear]=e;    
  41.     return true;    
  42. }    
  43. bool deQueue(SqQueue *&q,ElemType &e)  //出队    
  44. {    
  45.     if (q->front==q->rear)      //队空下溢出    
  46.         return false;    
  47.     q->front=(q->front+1)%MaxSize;    
  48.     e=q->data[q->front];    
  49.     return true;    
  50. }    
  51. </pre><br>  
  52. <br>  
  53. <pre></pre>  
  54. <pre class="cpp" name="code"><pre class="cpp" name="code">//main  
  55. #include <stdio.h>    
  56. #include "sqqueue.h"    
  57.     
  58. int main()    
  59. {    
  60.     ElemType e;    
  61.     SqQueue *q;    
  62.     printf("(1)初始化队列q\n");    
  63.     InitQueue(q);    
  64.     printf("(2)依次进队列元素a,b,c\n");    
  65.     if (enQueue(q,'a')==0) printf("队满,不能进队\n");    
  66.     if (enQueue(q,'b')==0) printf("队满,不能进队\n");    
  67.     if (enQueue(q,'c')==0) printf("队满,不能进队\n");    
  68.     printf("(3)队列为%s\n",(QueueEmpty(q)?"空":"非空"));    
  69.     if (deQueue(q,e)==0)    
  70.         printf("队空,不能出队\n");    
  71.     else    
  72.         printf("(4)出队一个元素%c\n",e);    
  73.     printf("(5)队列q的元素个数:%d\n",QueueLength(q));    
  74.     printf("(6)依次进队列元素d,e,f\n");    
  75.     if (enQueue(q,'d')==0) printf("队满,不能进队\n");    
  76.     if (enQueue(q,'e')==0) printf("队满,不能进队\n");    
  77.     if (enQueue(q,'f')==0) printf("队满,不能进队\n");    
  78.     printf("(7)队列q的元素个数:%d\n",QueueLength(q));    
  79.     printf("(8)出队列序列:");    
  80.     while (!QueueEmpty(q))    
  81.     {    
  82.         deQueue(q,e);    
  83.         printf("%c ",e);    
  84.     }    
  85.     printf("\n");    
  86.     printf("(9)释放队列\n");    
  87.     DestroyQueue(q);    
  88.     return 0;    
  89. }  </pre><br>  
  90. <img alt="" src="http://img.blog.csdn.net/20171023222902113?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcmVueXVhbnN1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"><br>  
  91. <pre></pre>  
  92. <br>  
  93.      
  94. </pre></pre>