資料結構之棧和佇列
阿新 • • 發佈:2018-12-11
棧和佇列是兩種重要的線性結構。從資料結構角度來看,棧和佇列也是線性表,它們是操作受限的線性表,被稱為限定性的資料結構。
棧(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)。雙端佇列是限定插入和刪除操作在標的兩端進行的線性表。