1. 程式人生 > >資料結構之棧和佇列

資料結構之棧和佇列

棧和佇列是兩種重要的線性結構。從資料結構角度來看,棧和佇列也是線性表,它們是操作受限的線性表,被稱為限定性的資料結構。

棧(Stack)

棧是限定僅在表尾進行插入或刪除操作的線性表。

表尾端被稱為棧頂(top),表頭端稱為棧底(bottom),不含元素的空表稱為空棧。

棧又稱為後進先出(last in first out)的線性表(LIFO結構)。

棧要記錄的資料:

(1)棧頂位置top

(2)棧最大大小size

棧的基本操作:

(1)判斷棧是否為空

(2)向棧中新增一個值

(3)從棧中彈出一個值

佇列(Queue)

佇列只允許在表的一段進行插入,而在另一端刪除元素。

在佇列中,允許插入的一端叫做隊尾(rear),允許刪除的一端則稱為隊頭(front)。

佇列是一種先進先出(first in first out)的線性表(FIFO結構)。

佇列要記錄的資料:

(1)隊頭位置head,即第一個元素的位置

(2)隊尾位置tail,即下一個元素要插入的位置,也即最後一個元素的下一個位置

(3)佇列最大大小size

佇列的基本操作:

(1)入隊

(2)出隊

棧 vs 佇列

(1)棧和佇列均可用陣列或連結串列來實現。

(2)棧是後進先出,佇列是先進先出

注:除了棧和佇列之外,還有一種限定性資料結構是雙端佇列(Deque)。雙端佇列是限定插入和刪除操作在標的兩端進行的線性表。