佇列是一種線性資料結構,依照特定順序插入和移除佇列元素。我們可以透過使用陣列和鍊錶來實現C 中的隊列。這兩種隊列實作都有各自的優點和用途。在本教程中,我們將區分基於陣列的佇列和基於鍊錶的佇列。
佇列是一系列使用FIFO(先進先出)原則進行元素插入和刪除的元素。電腦科學中的隊列類似於現實生活中的隊列,先進入隊列的人將被先移除。
移除佇列資料的過程稱為deQueue。將資料加入佇列中的操作稱為enQueue。
隊列有兩個點 -
後 - 佇列中的元素從此處插入。
Front - 佇列中的元素將從此處刪除。
我們可以透過兩種方法來實作佇列 -
基於陣列的佇列
#基於清單的佇列或鍊錶佇列
使用陣列來實作的佇列稱為基於陣列的佇列。它使用兩個指標:Front和Rear,分別代表Queue中的刪除點和插入點。
在此實作中,陣列大小是在插入資料之前預先定義的。這是插入和刪除佇列資料的最簡單的方法。
在基於清單的佇列或基於鍊錶的佇列中,鍊錶用於佇列實作。每個隊列節點由兩部分組成:一部分用於儲存數據,另一部分是連結部分或記憶體部分。
每個隊列元素都連接到下一個隊列元素的記憶體。在基於列表的佇列中有兩個指標 -
前指標 - 表示最後一個佇列元素的記憶體。
後指標 - 代表佇列第一個元素的記憶體。
S.No | 的中文翻譯為:序號 |
基於陣列的佇列 |
#基於鍊錶的佇列 |
|
---|---|---|---|---|
1 |
複雜性 |
它很容易實作和執行操作。 |
實作起來並不容易。 |
|
2 |
搜尋過程 |
它有助於輕鬆快速地搜尋。 |
速度慢且搜尋操作困難。 |
|
3 |
佇列大小 |
在初始化時定義佇列大小。 |
佇列初始化時無需定義佇列大小。 |
|
4 |
插入和刪除操作 |
#開頭插入資料困難,佇列末尾插入資料容易。 |
它在佇列的兩端提供了簡單的資料插入。 |
|
5 |
存取資料 |
隨機資料存取。 |
它提供對隊列元素的順序存取。 |
|
6 |
佇列大小調整 |
#更改佇列大小是困難的。 |
調整佇列大小很容易。 |
|
7 |
記憶體使用情況 |
#它消耗更少的記憶體。 |
它消耗更多的記憶體。 |
|
8 |
優點 |
|
|
|
9 |
缺點 |
|
|
如果您的佇列具有固定大小並且無需更改佇列大小,則可以使用陣列實作佇列。基於數組的佇列在快速搜尋且記憶體消耗較少的情況下也很有用。
當佇列大小是動態的並且佇列元素被插入和刪除多次時,基於鍊錶的佇列實作非常有用。雖然消耗記憶體較多,但用於大規模應用
使用基於陣列的佇列和基於鍊錶的佇列取決於需求。在大規模應用中,基於數組的隊列是不成功的,而使用鍊錶隊列。
基於數組的隊列使用的內存較少,但會浪費大量內存,因為在後端插入元素後,第一個元素之前會殘留一些未使用的內存。
以上是數組隊列和鍊錶隊列之間的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!