最近對迴圈佇列進行了深入了解,根據自己的理解用ai畫了下面的示意圖,並對其要點進行了歸納。如下所示:
下面是書上的習題,設計乙個可以在隊頭和隊尾進行入隊、出隊的佇列,算是迴圈佇列的練習公升級版,**如下:
//#include "stdafx.h"
#includeusing namespace std;
const int maxsize = 100;//迴圈佇列長度,可儲存的最大資料個數為maxsize-1
typedef struct cycqueuecycqueue;//資料型別定義
void initqueue(cycqueue *& q)//使用指標的引用
int empty(cycqueue* q)
int enqueue_f(cycqueue * q, int x)//從隊頭入隊
}int enqueue_r(cycqueue*q, int x)//從隊尾入隊
}int dequeue_f(cycqueue*q, int &x)//從隊頭出隊
}int dequeue_r(cycqueue*q, int&x)//從隊尾出隊
}//以下是測試函式
int _tmain(int argc, _tchar* argv)
cout << "******************************\n";
//2、尾插法入隊、出隊,功能類似棧
for (int i = 0; i < 10; i++)
enqueue_r(q, i);
while (!empty(q))
cout << "******************************\n";
//3、頭入隊,尾出隊
for (int i = 0; i < 10; i++)
enqueue_f(q, i);
while (!empty(q))
cout << "******************************\n";
//4、尾出隊,頭入隊
for (int i = 0; i < 10; i++)
enqueue_r(q, i);
while (!empty(q))
return 0;}
資料結構 佇列 迴圈佇列
在佇列的陣列實現中,我們很容易發現數在出隊後,陣列的前面部分會有剩餘空間沒有被使用,所以我們為了最大程度的利用固定長度的陣列,我們採用迴圈佇列的儲存方式,這種方式的最大問題在於resize的時候比較麻煩,所以我們不考慮resize的情況。基本結構如下,這裡front指向第乙個元素的位置,rear指向...
資料結構 佇列 迴圈佇列
資料結構 佇列 迴圈佇列 順序儲存 犧牲乙個空間單元來判段佇列滿狀態。q.front q.rear 1 initsize date 2017 4 16 include define elemtype char define initsize 100 typedef structsqqueue voi...
資料結構 迴圈佇列
所謂順序儲存結構就是用一組位址連續的儲存單元依次存放從隊頭到隊尾的元素。宣告兩個指標rear front分別用來指示隊尾元素的下一位置和隊頭元素的位置。初始化時rear front 0 插入新的元素時尾指標加1,元素出佇列時隊頭指標加1。不過這樣做有個問題,不論是入隊還是出隊,隊頭或隊尾指標都是加1...