国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁(yè) > 編程 > C++ > 正文

如何實(shí)現(xiàn)循環(huán)隊(duì)列

2020-05-23 14:17:25
字體:
供稿:網(wǎng)友

本文主要介紹了C語(yǔ)言循環(huán)隊(duì)列的實(shí)現(xiàn),對(duì)于數(shù)據(jù)結(jié)構(gòu)與算法的研究有所幫助,需要的朋友可以參考下

生活中有很多隊(duì)列的影子,比如打飯排隊(duì),買火車票排隊(duì)問題等,可以說與時(shí)間相關(guān)的問題,一般都會(huì)涉及到隊(duì)列問題;從生活中,可以抽象出隊(duì)列的概念,隊(duì)列就是一個(gè)能夠?qū)崿F(xiàn)“先進(jìn)先出”的存儲(chǔ)結(jié)構(gòu)。隊(duì)列分為鏈?zhǔn)疥?duì)列和靜態(tài)隊(duì)列;靜態(tài)隊(duì)列一般用數(shù)組來實(shí)現(xiàn),但此時(shí)的隊(duì)列必須是循環(huán)隊(duì)列,否則會(huì)造成巨大的內(nèi)存浪費(fèi);鏈?zhǔn)疥?duì)列是用鏈表來實(shí)現(xiàn)隊(duì)列的。

 

 
  1. #ifndef SQQUEUE_H_INCLUDED  
  2. #define SQQUEUE_H_INCLUDED /* 防止重復(fù)包含 */  
  3.  
  4. //////////////////////////////////////////  
  5. //包含頭文件  
  6. #include <stdlib.h>  
  7. #include "ds.h" // OK, Status 等定義  
  8.  
  9. //數(shù)據(jù)元素的類型(缺省使用int型)  
  10. #ifndef ElemType  
  11. #define ElemType int  
  12. #define USE_DEFAULT_ELEMTYPE /* 使用缺省類型的標(biāo)志 */  
  13. #endif //ElemType  
  14.  
  15. //////////////////////////////////////////  
  16. //循環(huán)隊(duì)列的存儲(chǔ)結(jié)構(gòu)  
  17.  
  18. #define MAXQSIZE 500/* 循環(huán)隊(duì)列的最大容量 */  
  19. typedef struct {  
  20. /* TODO (#1#): 這里完成循環(huán)隊(duì)列的類型定義 */ 
  21. ElemType *base;  
  22. int front;  
  23. int rear;  
  24. //....................................  
  25. } SqQueue;  
  26.  
  27.  
  28. //////////////////////////////////////////  
  29. //循環(huán)隊(duì)列的基本操作  
  30.  
  31. //構(gòu)造一個(gè)空隊(duì)列Q  
  32. Status InitQueue(SqQueue &Q)  
  33. {  
  34. /* TODO (#2#): 構(gòu)造空隊(duì)列 */ 
  35. Q.base=(ElemType*)malloc(MAXQSIZE *sizeof(ElemType));  
  36. if(!Q.base)exit(OVERFLOW);  
  37. QQ.front=Q.rear =0;  
  38. return OK; //TODO: 替換這行代碼,以下同  
  39. //....................................  
  40. }  
  41.  
  42. //銷毀隊(duì)列Q  
  43. // 前提:隊(duì)列Q已存在  
  44. Status DestroyQueue(SqQueue &Q)  
  45. {  
  46. /* TODO (#3#): 銷毀隊(duì)列 */ 
  47. free(Q.base);  
  48. Q.base=NULL;  
  49. Q.front=0;  
  50. Q.rear=0;  
  51. return OK;  
  52. //....................................  
  53. }  
  54.  
  55. //將隊(duì)列Q清為空隊(duì)列  
  56. // 前提:隊(duì)列Q已存在  
  57. Status ClearQueue(SqQueue &Q)  
  58. {  
  59. /* TODO (#4#): 清空隊(duì)列 */ 
  60. Q.base=0;  
  61. Q.rear=0;  
  62. return OK;  
  63. //....................................  
  64. }  
  65.  
  66. //若隊(duì)列Q為空,則返回TRUE,否則FALSE  
  67. // 前提:隊(duì)列Q已存在  
  68. Status QueueEmpty(SqQueue Q)  
  69. {  
  70. /* TODO (#5#): 判斷隊(duì)列是否為空 */ 
  71. if(Q.front==Q.rear)  
  72. return OK;  
  73. else 
  74. return ERROR;  
  75. //....................................  
  76. }  
  77.  
  78. //返回隊(duì)列Q的元素個(gè)數(shù),即隊(duì)列長(zhǎng)度  
  79. // 前提:隊(duì)列Q已存在  
  80. int QueueLength(SqQueue Q)  
  81. {  
  82. /* TODO (#6#): 返回隊(duì)列長(zhǎng)度 */ 
  83. return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;  
  84. //....................................  
  85. }  
  86.  
  87. //取隊(duì)列Q頭元素用e返回  
  88. // 前提:隊(duì)列Q存在且非空  
  89. Status GetHead(SqQueue Q,ElemType &e)  
  90. {  
  91. /* TODO (#7#): 取隊(duì)頭元素存入e */ 
  92. if(Q.rear==Q.front)  
  93. return ERROR;  
  94. e=Q.base[Q.front];  
  95. //e=*(Q.base+Q.front);  
  96. return OK;//返回操作狀態(tài)(成功:OK,失敗:ERROR)  
  97. //....................................  
  98. }  
  99.  
  100. //插入元素e作為隊(duì)列Q的新的隊(duì)尾元素  
  101. // 前提:隊(duì)列Q存在且未滿  
  102. Status EnQueue(SqQueue &Q, ElemType e)  
  103. {  
  104. /* TODO (#8#): 元素e入隊(duì)列 */ 
  105. if((Q.rear+1)%MAXQSIZE==Q.front)  
  106. return ERROR;  
  107. //e=*(Q.base +Q.rear);  
  108. Q.base[Q.rear]=e;  
  109. Q.rear=(Q.rear+1)%MAXQSIZE;  
  110. return OK;//返回操作狀態(tài)(成功:OK,失敗:ERROR)  
  111. //....................................  
  112. }  
  113.  
  114. //刪除隊(duì)列Q的隊(duì)頭元素,并用e返回  
  115. // 前提:隊(duì)列Q存在且非空  
  116. Status DeQueue(SqQueue &Q, ElemType e)  
  117. {  
  118. /* TODO (#9#): 出隊(duì)列存入e */ 
  119. if(Q.front==Q.rear)  
  120. return ERROR;  
  121. //e=*(Q.base+Q.front);  
  122. e=Q.base[Q.front];  
  123. Q.front=(Q.front+1)%MAXQSIZE;  
  124. return OK;//返回操作狀態(tài)(成功:OK,失敗:ERROR)  
  125. //....................................  
  126. }  
  127.  
  128. //////////////////////////////////////////  
  129.  
  130.  
  131. //TODO: 定義好 SqQueue 類型后使用 QueueView 函數(shù)  
  132. /****** //TODO: 刪除此行以便使用QueueView()  
  133. #include <stdio.h>  
  134. //查看隊(duì)列狀態(tài)(調(diào)試用)  
  135. void QueueView(SqQueue Q)  
  136.  
  137. extern void PrintElem(ElemType e);//打印數(shù)據(jù)用  
  138. int i=0;  
  139. if(Q.front<0||Q.front>=MAXQSIZE||Q.rear<0||Q.rear>=MAXQSIZE){  
  140. printf("隊(duì)列未初始化/n");  
  141. return ;  
  142.  
  143. printf("---Queue View---/n");  
  144. printf("front=%d , rear=%d/n", Q.front, Q.rear);  
  145. if(Q.rear>=Q.front) {  
  146. printf("..... ....../n");  
  147. for(i=Q.front; i<Q.rear; i++) {  
  148. printf("%5d/t", i);  
  149. PrintElem(Q.base[i]);  
  150. printf("/n");  
  151.  
  152. if(i<MAXQSIZE) printf("..... ....../n");  
  153. } else {  
  154. for(i=0; i<Q.rear; i++) {  
  155. printf("%5d/t", i);  
  156. PrintElem(Q.base[i]);  
  157. printf("/n");  
  158.  
  159. printf("..... ....../n");  
  160. for(i=Q.front; i<MAXQSIZE; i++) {  
  161. printf("%5d/t", i);  
  162. PrintElem(Q.base[i]);  
  163. printf("/n");  
  164.  
  165.  
  166. printf("--- view end ---/n");  
  167.  
  168. ******/ //TODO: 刪除此行以便使用QueueView()  
  169.  
  170. //取消ElemType的默認(rèn)定義,以免影響其它部分  
  171. #ifdef USE_DEFAULT_ELEMTYPE  
  172. #undef ElemType  
  173. #undef USE_EFAULT_ELEMTYPE  
  174. #endif  
  175.  
  176. #endif //SQQUEUE_H_INCLUDED  
  177.  
  178. #include <stdio.h>  
  179. #include <stdlib.h>  
  180. #include "sqqueue.h"  
  181.  
  182. //初始化系統(tǒng)  
  183.  
  184.  
  185. void Finalize(SqQueue &q);  
  186.  
  187. ////////////////////////////////////////////  
  188. //主程序  
  189. int main()  
  190. {  
  191. SqQueue q; //循環(huán)隊(duì)列  
  192. int x;  
  193.  
  194. //系統(tǒng)初始化  
  195. InitQueue(q);  
  196. printf("數(shù)據(jù)元素進(jìn)隊(duì)列,以0結(jié)束");  
  197. scanf("%d",&x);  
  198. while(x!=0){  
  199. EnQueue(q,x);  
  200. scanf("%d",&x);  
  201. }  
  202. printf("/n隊(duì)列元素的個(gè)數(shù)");  
  203.  
  204. printf("%d",QueueLength(q));  
  205.  
  206.  
  207. printf("/n頭元素是:");  
  208. if(!QueueEmpty(q)){  
  209. if(GetHead(q,x)==OK)  
  210. printf("%d",x);  
  211. }  
  212.  
  213.  
  214. printf("/n出隊(duì)列,先進(jìn)先出");  
  215. if( DeQueue(q,x)==OK)  
  216. printf("%d",x);  
  217. printf("/n此時(shí)的對(duì)頭是:");  
  218. if(!QueueEmpty(q)){  
  219. if(GetHead(q,x)==OK)  
  220. printf("%d/n",x);  
  221. }  
  222.  
  223. }  

實(shí)現(xiàn)的效果:

如何實(shí)現(xiàn)循環(huán)隊(duì)列

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠理解。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
开心婷婷激情| 轻轻色免费在线视频| 成人精品福利| 国产视频三区| 国产高清视频在线观看| 精品一区二区三区高清免费不卡| 中文字幕第一页在线| 国产中文在线观看| 中中文字幕av在线| 国产一级在线观看| 国产黄色在线| 日本h片在线观看| 日本中文字幕在线播放| 2020中文字幕在线播放| 青青草中文字幕| 国产人成在线视频| 国产福利在线播放麻豆| 青草视频在线播放| 国产第一页在线| 福利在线视频导航| 精品剧情v国产在线观看| 亚洲成人av高清| 免费黄网站在线观看| 日本国产在线| 国产二级片在线| 日本中文字幕在线看| eeuss影院在线观看| 国产极品一区二区三区| 日本高清不卡中文字幕| 精品国内一区二区三区免费视频 | 国产日韩欧美精品一区二区三区 | 天天操天天操天天色天天要| 国产视频二区在线观看| 麻豆电影传媒二区| 在线观看av的网站| 国产高潮又爽又无遮挡又免费| 国产中文字幕av| 超碰免费在线| 黄色网址在线免费播放| 精品美女在线观看视频在线观看| 中文字幕在线视频观看| 高潮毛片在线观看| 黄色在线视频观看网站| 国产原创av在线| 免费视频二区| 免费观看久久久久| 免费看的av| 狠狠操狠狠色| 国产免费福利网站| 尤物网站在线| 国产三级在线观看| 国产亚av手机在线观看| 中文字幕日本在线| 黄色免费av| 丁香综合五月| 国产精品伦一区二区三区级视频频| 国产网站观看9久| 夜夜操天天干| 久草在线资源福利| 国产农村av| 国产精品69xx| 欧美日韩不卡中文字幕在线| 黄色一级片视频| 久久精品蜜桃| 最近最好的中文字幕2019免费| 国产高清一级片| 任你操视频在线观看| 国产羞羞视频在线观看| 精品视频vs精品视频| 国产精品视频一区二区三区麻豆 | 国产成人亚洲综合小说区| ·天天天天操| www在线视频| 国产高清av| 国产麻豆精品入口在线观看| 国产精品白浆流出视频| 九九热在线视频观看| 91中文字幕网| 日本在线视频www鲁啊鲁| 天天av综合网| 久草.com| 97国产视频| 国产色在线观看| 国产美女一区视频| av人人综合网| 精品推荐蜜桃传媒| 国产精品久久久久久久久鸭| 欧美精品se| 国产不卡视频| 国产黄色片在线观看| 最新中文字幕在线| 国内自拍视频在线看免费观看| 精品一区二区在线欧美| 国产精品国产国产aⅴ| 天堂在线免费视频| 国精一区二区三区| 狂野欧美性猛交xxxx乱大交| 在线黄色av| 在线免费观看黄色片| 91美女在线| 一级二级三级在线观看| 91九色在线看| 亚洲男人网站| www在线视频| 青青草中文字幕| www久久日com| 噜噜噜噜噜在线视频| 欧美性猛交p30| 免费观看久久久久| 国产在线高清| 天堂中文资源在线| 国产亚洲精品自在线观看| 午夜免费福利在线观看| 国产精品国产国产aⅴ| 国产高清免费视频| 在线观看精品一区二区三区| 亚洲精品国自产拍在线观看| www在线视频观看| 久久久久久久久免费视频| 国产在线黄色片| 国产精品入口麻豆免费| 伊人中文字幕在线| 免费a级在线播放| 日韩av成人| 亚洲欧洲成人| 国产精品一卡二卡三卡| 中文字幕在线免费观看| 国产视频1区| 欧美午夜电影一区二区三区| 天天操夜夜操天天射| 在线观看av网站永久| 丁香花视频在线观看| 国产精品黄页网站在线播放免费 | www.jizz在线观看| 国产卡1卡2卡三卡在线| 国产丝袜自拍| 久久国产综合视频| 国产三线在线| 丁香花视频在线观看| 亚洲精品天堂在线观看| 国产一起色一起爱| 久色视频在线观看| 夜夜操天天干| 精品视频在线一区二区| 国产一二三视频| 激情网站在线| 国产中文字幕网| 日本视频二区| 2018狠狠干| 2021av天天| 国产99re66在线视频| 国产一区二区在线|播放| 亚洲成人电视网| 国产馆av播放| 狠狠操天天操夜夜操| 亚洲综合在线免费| 国产成人无吗| 国产成人夜间影院在线观看| 久久久久久国产视频| 免费观看一二区视频网站| gogo在线高清视频| eeuss影院在线观看| 在线观看中文| 在线色视频观看| av在线免费观看网| 日本一级理论片在线大全| japanese色国产在线看视频| 在线观看电影av| 日本一卡二卡四卡精品| 青青草观看免费视频在线| 超碰免费在线播放| 国产特级嫩嫩嫩bbb| 国产精品你懂的在线观看 | 久草视频国产| 国产免费人人看| 国产激情视频在线| 依依成人在线| 久久精品蜜桃| 国产99re66在线视频| 亚洲www色| 最新中文字幕av专区| 最近中文字幕av免费高清| 国产亚洲精品午夜高清影院| 国产成a人亚洲精v品| 在线观看视频污| 久久99精品久久久久久野外| 天堂资源最新版在线视频观看免费网| 在线91av| 四虎一区二区三区| 国产精品一卡二卡三卡| 91麻豆福利| 国产精品一区二区三区四区色| 国产精品日日爱| 欧美日韩国产亚洲沙发| 国产精品冒白浆免费视频| 天天激情综合| 国产一二区在线| 免费国产在线视频| av免费在线观| 国产国产国产国产国产国产|