之前不採用stl實現雙端佇列時我記得我就是使用了迴圈佇列。。。其實這是不規範的(雖然說使用很靈活,但我覺得還是應該分開來,避免弄混)。所以誤區就是,迴圈佇列是不允許彈出隊尾或新增隊首的,也就是說它是最傳統的佇列,嚴格符合「先進先出,後進後出」的特點!
判斷佇列是否滿有兩種解決方法:
少用乙個單元,規定頭(front)在尾(rear)後一位時就為滿狀態
設定乙個標誌,可以用bool 型,若滿則為true,未滿則false
#include
using
namespace std;
//--------------------迴圈佇列實現------------------//
#define elemtype int
#define maxsize 20
struct cirque
;// 初始化迴圈佇列
void
init
(cirque &q)
// 插入元素
void
inque
(cirque &q, elemtype e)
q.base[q.rear++
]= e;
}// 彈出並返回元素
elemtype&
popque
(cirque &q)
return q.base[q.front++];
}// 列印佇列
void
printque
(const cirque &q)
else
}int
main()
晚安~~ 資料結構四 迴圈佇列
1.在之前的佇列中,因為是通過rear maxsize 1判斷佇列是否滿了,而如果出隊後,front依次往後移動,這就會導致front前面的空間白白浪費掉,整個陣列空間其實並沒有滿,所以這裡就有了迴圈佇列 2.迴圈佇列這裡設定front為第乙個元素,而rear為最後乙個元素的下乙個元素,同時規定迴圈...
資料結構之迴圈佇列
資料結構之佇列 迴圈佇列 ide vs2010 佇列操作 初始化 入隊 插入隊尾 出隊 即取隊頭 判斷佇列是否非空 滿 include using namespace std define max len 100 定義節點型別 typedef struct queue queue 初始化 void ...
資料結構之迴圈佇列
4.10 佇列的定義 佇列定義 一種先進先出的線性表。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。隊頭 隊尾 出佇列 a1 a2 a3 a4 an 入佇列 佇列有類似線性表的各種操作,不同的就是插入資料只能在隊尾進行,刪除資料只能在隊頭進行。線性表有線性儲存和鏈式儲存。棧是線性表,有這兩種儲存方...