/*
前面在學習順序佇列時,由於順序表的侷限性,我們在順序佇列中實現資料入隊和出隊的基礎上,
又對實現**做了改進,令其能夠充分利用陣列中的空間。鏈式佇列就不需要考慮空間利用的問題
因為鏈式佇列本身就是實時申請空間。因此,這可以算作是鏈式佇列相比順序佇列的乙個優勢
*/#include #include typedef struct qnode qnode;
qnode * initqueue()
/*鏈隊佇列中,當有新的資料元素入隊,只需進行以下 3 步操作:
1,將該資料元素用節點包裹,例如新節點名稱為 elem;
2,與 rear 指標指向的節點建立邏輯關係,即執行 rear->next=elem;
3,最後移動 rear 指標指向該新節點,即 rear=elem
*/qnode* enqueue(qnode * rear, int data)
/*鏈式佇列中隊頭元素出隊,需要做以下 3 步操作:
1,通過 top 指標直接找到隊頭節點,建立乙個新指標 p 指向此即將出隊的節點;
2,將 p 節點(即要出隊的隊頭節點)從鍊錶中摘除;
3,釋放節點 p,**其所佔的記憶體空間
*/qnode* dequeue(qnode * top, qnode * rear)
qnode * p = top->next;
printf("%d ", p->data);
top->next = p->next;
if (rear == p)
free(p);
return rear;
}int main()
陣列模擬佇列
1.佇列本身是有序列表,若使用陣列的結構來儲存佇列的資料,則佇列陣列的宣告如下圖,其中 maxsize 是該隊 列的最大容量。2.因為佇列的輸出 輸入是分別從前後端來處理,因此需要兩個變數 front 及 rear 分別記錄佇列前後端的下標,front 會隨著資料輸出而改變,而 rear 則是隨著資...
陣列模擬佇列
指標位置 front 指向佇列的第乙個元素,也就是說front就是 陣列的第乙個元素。front的初始值 0。rear 指向佇列的最後乙個元素的後乙個位置.因為希望空出 乙個空間做為約定。rear 的初始值 0。判空條件if front rear 佇列滿判斷條件if rear maxsize 1 有...
陣列模擬佇列
佇列是乙個有序列表,可以用陣列或是鍊錶來實現。遵循先入先出的原則。即 先存入佇列的資料,要先取出。後存入的要後取出 檢視佇列頭資訊 trycatch exception e break case e 退出 scanner.close loop false break default break sy...