棧和佇列是兩種常用的資料結構,同時又是操作受限的線性表,也是兩種重要的抽象資料型別。1、
1棧是限定僅在表尾進行插入和刪除操作的線性表。
棧中元素具有線性關係和後進先出的特性。
2雖然對插入和刪除操作的位置限制減少了棧的靈活性,但同時也使得棧的操作更有效更容易實現。
3棧的儲存結構分兩種,一種是順序儲存結構,一種是鏈結儲存結構。第一種稱為順序棧,由於棧元素的資料型別不確定,所以採用
c++模板機制實現。第二種是鏈棧,鏈棧的結點結構可以復用單鏈表的結點結構,將棧的抽象資料型別定義在鏈棧儲存結構下用
c++中的類實現。
4當鍊棧跟順序棧做比較時,若使用過程中元素個數變化較大時,用鏈棧最適宜,因為鏈棧沒有棧滿問題,只有當記憶體沒有可用空間時才會出現棧滿,但是每個元素都需要乙個指標域,從而產生了結構性開銷;反之,採用順序棧,初始時順序棧必須確定乙個固定長度,所以又儲存元素個數的限制和空間浪費問題。2、
1佇列是只允許在一端進行插入操作,在另一端進行刪除操作的線性表。佇列中元素具有線性關係和先進先出的特性。
2佇列的儲存結構也分兩種,一種是迴圈佇列,另一種是鏈佇列。佇列元素資料型別不確定,所以採用
c++模板機制實現。
3迴圈佇列和鏈佇列比較時,迴圈佇列不能像順序棧那樣共享空間,通常不能在乙個陣列中儲存兩個迴圈佇列,所以兩者的比較與鏈棧和順序棧的比較相類似。
4迴圈佇列的實現包括五個步驟:建構函式、入隊操作、出隊操作、讀取隊頭元素、判空操作;然而鏈佇列的實現則有六個步驟:建構函式、入隊操作、出隊操作、讀取隊頭元素、判空操作、析構函式。
第三章 棧和佇列
棧和佇列 一 棧 1 棧的定義 棧是限定僅在表尾進行插入和刪除操作的線性表,允許插入和刪除的一端稱為棧頂,另一端稱為棧底,不含任何資料元素的棧稱為空棧。2 在任何時候出棧的元素都只能是棧頂元素,即最後最後入棧者最先出棧。所以棧中元素除了具有線性關係外,還具有後進先出的特性。3 棧的抽象資料型別定義 ...
第三章 棧和佇列
第三章棧和佇列 一 棧1.棧 限定僅在表尾進行插入和刪除操作的線性表 允許插入和刪除的一端稱為棧頂 另一端稱為棧底 2.空棧 不含任何資料元素的棧。3.在任何時候出棧的元素都只能是棧頂元素,即最後入棧者最先出棧,具有後進先出的特性。4.棧的抽象資料型別定義 1 push 輸入 元素值 x 輸出 如果...
第三章 棧和佇列
3.1 棧 3.1.1 棧的邏輯結構 1.棧 限定僅在表的一端進行插入和刪除操作的線性表。允許插入和刪除的一端稱為棧頂,另一端稱為棧底。空棧 不含任何資料元素的棧。棧的操作特性 後進先出 注意 棧只是對錶插入和刪除操作的位置進行了限制,並沒有限定插入和刪除操作進行的時間。2.棧的抽象資料型別定義 a...