棧(Stack)和佇列(Queue)

2021-05-08 05:20:43 字數 778 閱讀 3192

棧和佇列是兩種重要的線性結構。從資料結構角度看,棧和佇列也是線性表,其特殊性在於棧和佇列的基本操作是線性表操作的子集,它們是操作受限的線性表,因 此,可稱為限定性的資料結構。但從資料型別角度看,它們是和線性表大不相同的兩類重要的抽象資料型別。由於它們廣泛應用在各種軟體系統中,因此在物件導向 的程式設計中,它們是多型資料型別。本章除了討論棧和佇列的定義、表示方法和實現外,還將給出一些應用的例子。

抽象資料型別棧的定義

棧(stack) 是限定僅在表尾進行插入或刪除操作的線性表。因此,對棧來說,表尾端有其特殊含義,稱為棧頂(top),相應地,表頭端稱為棧底(bottom)。不含元素的空表稱為空棧。

(1)queue和stack類都是容器介面卡(container adaptor),容器介面卡將一些基礎容器轉化為自身類的容器。容器介面卡構造時需要乙個容器模板,例如vector,deque,list等, queue和stack預設的容器模板是deque。這些容器模板也是有一定要求的,需要支援一些基礎的方法,比如說vector類就不能做queue的 容器模板(或者叫基礎容器),因為vector沒有pop_front方法。

(2)佇列,queue,滿足:1)插入只能從尾部進行;2)刪除,檢索,修改只允許從頭部進行,於是就有先入先出(fifo)的規律。queue的方法很少,也沒有迭代器,而且其唯一可以被訪問,修改的量就是queue開頭的項。

(3)堆疊,stack,與queue正好相反,後入先出(lifo)。stack同樣沒有迭代器,只有堆疊頂部的項才可以被訪問。-->可以利用堆疊來實現遞迴,事實上,編譯器實現遞迴就是通過建立和維護活動對戰的**來實現的 。

棧stack 和 佇列queue

stl中,sort的預設排序為less,也就是說從小到大排序 priority queue預設是less,也就說大頂堆 map預設是less,也就說用迭代器迭代的時候預設是小的排在前面 set預設是less,也就是說用迭代器迭代的時候是從小到大排序的。棧和佇列的區別是啥?吃多了拉就是佇列,吃多了吐就...

棧(stack)和佇列(queue)

棧的定義 特點 filo 是一種只能在一端進行插入或刪除操作的線性表。其中允許進行插入或刪除操作的一端稱為棧頂 top 棧頂由乙個稱為棧頂指標的位置指示器 對於順序棧,就是記錄棧頂元素所在陣列位置標號的乙個整型變數 對於鏈式棧,就是記錄棧頂元素所在結點位址的指標 來指示,它是動態變化的。表的另一端稱...

棧Stack和佇列Queue

1.stack和queue stack是先進後出的,queue是先進先出的。使用方法如下 public class dog public dog string name public void consolename 棧 先進後出 stacks new stack s.push new dog a ...