演算法與資料結構之棧和佇列篇

2021-10-24 22:19:48 字數 979 閱讀 4872

1. 在棧的adt定義中,除初始化操作外,其他基本操作的初始條件都要求棧已存在。

2. 棧是操作受限(或限定僅在表尾部進行插入和刪除操作)的線性表,其運算遵循的是先進後出原則。

4. 向棧中壓入元素的操作是先進棧,後退棧

5. 當兩個棧共享一儲存區時,棧利用一維陣列stack(1,n)表示,兩棧頂指標為top[1]與top[2],則當棧1空時,top[1]為0,top[2]為n+1,棧滿時為top[1]+1=top[2]。

6. 兩個棧共享空間時棧滿的條件為兩棧頂指標值相減的絕對值為1(或兩棧頂指標相鄰)

7. 在進行入棧運算時應先判斷棧是否滿;在進行出棧運算時應先判斷棧是否為空;當棧中元素為n個,作進棧運算時發生上溢時,則說明該棧的最大容量為n。為了增加記憶體空間的利用率和減少溢位的可能性,由兩個棧共享的一片連續的空間時,應將兩個棧的棧底分別設定在記憶體空間的兩端,這樣只有當兩棧頂指標值相減的絕對值為1(或兩棧頂指標相鄰)時才產生溢位。

8. 多個棧共享時,最好使用鏈式儲存結構作為儲存結構。

9. 佇列又稱作先進先出表。

10. 佇列的特點是先進先出。

11. 在具有n個元素的非空佇列中插入乙個或者刪除乙個元素的操作時間複雜度為o(1)

12. 迴圈佇列是一種順序(物理)結構。

13. 迴圈佇列的目的時為了解決假溢位時大量移動資料元素。

14. 區分迴圈佇列的滿與空,只有兩種方法,它們是犧牲乙個儲存單元,設標記(設計數器等方法)。

15. 用迴圈佇列表示佇列的長度為n,若只設頭指標,則出隊和入隊的時間複雜度分別是o(1)和o(n);若只設定尾指標,則出隊和入隊的時間複雜度分別是o(1)和o(1)。

資料結構與演算法之棧和佇列

棧和佇列以及優先佇列是比陣列和其他資料結構更加抽象的結構。主要通過介面對棧 佇列 和優先順序佇列進行定義,這些介面表明通過它們可以完成的操作,而它們的主要實現機制對 使用者來說是不可見的。棧每一次只允許訪問乙個資料項 最後插入的資料項,所以棧又叫先進後出 在這裡用陣列定義乙個棧,如下 public ...

資料結構與演算法之棧和佇列

1.棧 package com.thinkofdatastruct.fourunit public class stackdemo 帶引數的構造方法 public stackdemo int maxsize 加入資料 public void push int data pop移除資料 public ...

資料結構與演算法 棧和佇列

棧 是限制在表的一端進行插入和刪除運算的線性表。棧又稱後進先出簡稱lifo表 佇列 也是一種運算受限的線性表。它只允許在標的一端進行插入,而在另一端進行刪除。佇列亦稱先進先出fifo表 1.棧與佇列的區別 1 佇列先進先出,棧先進後出。2 對插入和刪除操作的 限定 棧是限定只能在表的一端進行插入和刪...