鏈式佇列相比陣列模擬佇列的優勢

2021-09-26 01:27:16 字數 846 閱讀 9558

/*

前面在學習順序佇列時,由於順序表的侷限性,我們在順序佇列中實現資料入隊和出隊的基礎上,

又對實現**做了改進,令其能夠充分利用陣列中的空間。鏈式佇列就不需要考慮空間利用的問題

因為鏈式佇列本身就是實時申請空間。因此,這可以算作是鏈式佇列相比順序佇列的乙個優勢

*/#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...