亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

詳解數據結構C語言實現之循環隊列

2020-01-26 14:29:42
字體:
來源:轉載
供稿:網友

本文講的是循環隊列,首先我們必須明白下面幾個問題

循環隊列的基礎知識

1.循環隊列需要幾個參數來確定

循環隊列需要2個參數,front和rear

2.循環隊列各個參數的含義

(1)隊列初始化時,front和rear值都為零;

(2)當隊列不為空時,front指向隊列的第一個元素,rear指向隊列最后一個元素的下一個位置;

(3)當隊列為空時,front與rear的值相等,但不一定為零;

3.循環隊列入隊的偽算法

(1)把值存在rear所在的位置;

(2)rear=(rear+1)%maxsize ,其中maxsize代表數組的長度;

程序代碼:

bool Enqueue(PQUEUE Q, int val) {   if(FullQueue(Q))     return false;   else   {     Q->pBase[Q->rear]=val;     Q->rear=(Q->rear+1)%Q->maxsize;     return true;   } } 

4.循環隊列出隊的偽算法

(1)先保存出隊的值;

(2)front=(front+1)%maxsize ,其中maxsize代表數組的長度;

程序代碼:

bool Dequeue(PQUEUE Q, int *val) {   if(EmptyQueue(Q))   {     return false;   }   else   {     *val=Q->pBase[Q->front];     Q->front=(Q->front+1)%Q->maxsize;     return true;   } } 

5.如何判斷循環隊列是否為空

if(front==rear)

隊列空;

else

  隊列不空;

bool EmptyQueue(PQUEUE Q) {   if(Q->front==Q->rear)  //判斷是否為空     return true;   else     return false; } 

6.如何判斷循環隊列是否為滿

 這個問題比較復雜,假設數組的存數空間為7,此時已經存放1,a,5,7,22,90六個元素了,如果在往數組中添加一個元素,則rear=front;此時,隊列滿與隊列空的判斷條件front=rear相同,這樣的話我們就不能判斷隊列到底是空還是滿了;

解決這個問題有兩個辦法:

一是增加一個參數,用來記錄數組中當前元素的個數;

第二個辦法是,少用一個存儲空間,也就是數組的最后一個存數空間不用,當(rear+1)%maxsiz=front時,隊列滿;

bool FullQueue(PQUEUE Q) {   if(Q->front==(Q->rear+1)%Q->maxsize)  //判斷循環鏈表是否滿,留一個預留空間不用     return true;   else     return false; } 

附錄:

queue.h文件代碼:

#ifndef __QUEUE_H_ #define __QUEUE_H_ typedef struct queue  {   int *pBase;   int front;  //指向隊列第一個元素   int rear;  //指向隊列最后一個元素的下一個元素   int maxsize; //循環隊列的最大存儲空間 }QUEUE,*PQUEUE;  void CreateQueue(PQUEUE Q,int maxsize); void TraverseQueue(PQUEUE Q); bool FullQueue(PQUEUE Q); bool EmptyQueue(PQUEUE Q); bool Enqueue(PQUEUE Q, int val); bool Dequeue(PQUEUE Q, int *val); #endif 

queue.c文件代碼:

#include<stdio.h> #include<stdlib.h> #include"malloc.h" #include"queue.h" /*********************************************** Function: Create a empty stack; ************************************************/ void CreateQueue(PQUEUE Q,int maxsize) {   Q->pBase=(int *)malloc(sizeof(int)*maxsize);   if(NULL==Q->pBase)   {     printf("Memory allocation failure");     exit(-1);    //退出程序   }   Q->front=0;     //初始化參數   Q->rear=0;   Q->maxsize=maxsize; } /*********************************************** Function: Print the stack element; ************************************************/ void TraverseQueue(PQUEUE Q) {   int i=Q->front;   printf("隊中的元素是:/n");   while(i%Q->maxsize!=Q->rear)   {     printf("%d ",Q->pBase[i]);     i++;   }   printf("/n"); } bool FullQueue(PQUEUE Q) {   if(Q->front==(Q->rear+1)%Q->maxsize)  //判斷循環鏈表是否滿,留一個預留空間不用     return true;   else     return false; } bool EmptyQueue(PQUEUE Q) {   if(Q->front==Q->rear)  //判斷是否為空     return true;   else     return false; } bool Enqueue(PQUEUE Q, int val) {   if(FullQueue(Q))     return false;   else   {     Q->pBase[Q->rear]=val;     Q->rear=(Q->rear+1)%Q->maxsize;     return true;   } }  bool Dequeue(PQUEUE Q, int *val) {   if(EmptyQueue(Q))   {     return false;   }   else   {     *val=Q->pBase[Q->front];     Q->front=(Q->front+1)%Q->maxsize;     return true;   } } 

以上就是C語言實現循環隊列的全部內容,對于學習數據結構與算法的研究有所幫助,有需要的朋友可以參考下。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美黑人性生活视频| 欧美一区二粉嫩精品国产一线天| www.亚洲人.com| 国产精品久久久久久久9999| 久久人人爽人人爽爽久久| 欧美黑人xxxx| 日韩在线视频中文字幕| 中文字幕日韩免费视频| 日韩av一区在线观看| 日韩亚洲在线观看| 久久av在线看| 亚洲男人天堂手机在线| 欧美专区在线观看| 亚洲欧美在线免费观看| 国产一区红桃视频| 国产精品视频一| 亚洲成人久久电影| 亚洲精选中文字幕| 久久久久久亚洲精品中文字幕| 国产成人一区二区三区| 国产精品色悠悠| 久久久久久尹人网香蕉| 北条麻妃99精品青青久久| 亚洲国语精品自产拍在线观看| 日韩在线观看免费高清完整版| 精品国产一区二区三区久久久| 91精品久久久久久久久久入口| 国产69精品久久久| 伊人男人综合视频网| 亚洲精品黄网在线观看| 亚洲视频网站在线观看| 91精品在线观看视频| 亚洲欧美一区二区三区四区| 欧美日韩亚洲视频| 日韩精品在线私人| 欧美激情在线视频二区| 91精品国产自产在线老师啪| 97在线看福利| 欧美一级在线亚洲天堂| 国产精品视频一区二区三区四| 8090成年在线看片午夜| 日韩精品极品在线观看播放免费视频| 九色精品免费永久在线| 欧美综合一区第一页| 亚洲淫片在线视频| 亚洲黄色www网站| 亚洲天堂第一页| 欧美日韩福利电影| 久久中文字幕视频| 国产一区二区黄| 国产精品黄页免费高清在线观看| 亚洲欧美中文日韩在线v日本| 一区二区亚洲精品国产| 青青在线视频一区二区三区| 欧美成在线视频| 欧美美最猛性xxxxxx| 欧美性猛交xxxx富婆弯腰| 日韩av第一页| 日本精品一区二区三区在线| 日韩欧美高清视频| 成人夜晚看av| 亚洲www永久成人夜色| 在线观看欧美日韩| 最近的2019中文字幕免费一页| 久久九九亚洲综合| 国产日韩av高清| 亚洲精选一区二区| 91精品国产91久久久久福利| 精品在线观看国产| 国内精品久久久久久中文字幕| 日韩高清欧美高清| 国产精品福利在线观看| 亚洲精品成人免费| 亚洲综合在线做性| 亚洲第一天堂av| 国产精品jizz在线观看麻豆| 亚洲国产精彩中文乱码av| 久久综合久久美利坚合众国| 久久久精品视频成人| 久久精品视频在线观看| 成人性生交大片免费看视频直播| 91精品国产91久久久久福利| 亚洲精品国产美女| 在线观看视频99| 亚洲男人天堂2024| 亚洲欧美精品一区二区| www.亚洲人.com| 欧美大成色www永久网站婷| 97超碰国产精品女人人人爽| 国产亚洲一区二区精品| 26uuu亚洲国产精品| 正在播放欧美一区| 国产亚洲精品美女久久久久| 亚洲欧洲在线播放| 黑人精品xxx一区| 久久69精品久久久久久久电影好| 日韩在线视频线视频免费网站| 国产精品十八以下禁看| 欧美性xxxxxx| 国产一区二区三区在线免费观看| 色无极影院亚洲| 日韩欧美中文字幕在线观看| 欧美高清在线播放| 91在线中文字幕| 亚洲第一二三四五区| 国产成人精品久久亚洲高清不卡| 亚洲精品视频在线播放| 亚洲丁香婷深爱综合| 久热爱精品视频线路一| 3344国产精品免费看| 欧美一级淫片播放口| 亚洲黄页视频免费观看| 亚洲精品久久久久中文字幕二区| 97精品国产91久久久久久| 日韩av免费看网站| 午夜精品蜜臀一区二区三区免费| 97在线视频免费观看| 久久精品在线播放| 国产精品老女人精品视频| 欧美激情精品久久久久久变态| 亚洲国产精品成人一区二区| 国产日本欧美一区二区三区| 日本一欧美一欧美一亚洲视频| 日韩精品欧美激情| 亚洲欧美国产另类| 中文字幕亚洲综合久久筱田步美| 国产精品久久久久久久久免费| 欧美wwwxxxx| 日韩资源在线观看| 日韩一区二区三区在线播放| 亚洲午夜久久久久久久| 欧美日韩一区二区在线| 91精品国产乱码久久久久久久久| 色综合久久久888| 国产精品伦子伦免费视频| 91国在线精品国内播放| 国产精品看片资源| 欧美激情乱人伦| 国产91精品久久久久久| 久久激情视频久久| 在线视频精品一| 4p变态网欧美系列| 超薄丝袜一区二区| 亚洲裸体xxxx| 久久久久北条麻妃免费看| 成人午夜在线视频一区| 久久久久久久爱| 日韩第一页在线| 亚洲国产成人av在线| 成人情趣片在线观看免费| 欧美性猛交xxxxx免费看| 日韩电影免费在线观看中文字幕| 欧美性猛交xxxxx水多| 欧美激情第一页xxx| 欧美亚洲激情视频| 欧美色道久久88综合亚洲精品| 国产日韩在线一区| 精品国产91久久久久久| 91中文字幕在线| 国产精品第10页| 国产欧美一区二区三区久久| 国产精品久久久久久久久久免费| 成人国内精品久久久久一区| www.欧美精品|