1. 程式人生 > >線性結構 -- 棧和佇列

線性結構 -- 棧和佇列

線性結構 – 棧和佇列

線性結構是一個有序資料元素的集合。
常用的線性結構有:線性表,棧,佇列,雙佇列,陣列,串。
常見的非線性結構有:二維陣列,多維陣列,廣義表,樹(二叉樹等),圖。

特徵:

1.集合中必存在唯一的一個"第一個元素";
2.集合中必存在唯一的一個"最後的元素";
3.除最後元素之外,其它資料元素均有唯一的"後繼";
4.除第一元素之外,其它資料元素均有唯一的"前驅"。

資料結構中線性結構指的是資料元素之間存在著“一對一”的線性關係的資料結構。

線性結構擁有兩種不同的儲存結構,即順序儲存結構和鏈式儲存結構。
順序儲存的線性表稱為順序表,順序表中的儲存元素是連續的,鏈式儲存的線性表稱為連結串列,連結串列中的儲存元素不一定是連續的,元素節點中存放資料元素以及相鄰元素的地址資訊。

主要談論棧和佇列:
棧與佇列的相同點:

1. 都是線性結構。
2. 插入操作都是限定在表尾進行。
3. 都可以通過順序結構和鏈式結構實現。
4. 插入與刪除的時間複雜度都是O(1),在空間複雜度上兩者也一樣。
5. 多鏈棧和多鏈佇列的管理模式可以相同。

棧與佇列的不同點:
1.刪除資料元素的位置不同:棧的刪除操作在表尾(棧頂)進行,佇列的刪除操作在表頭進行。
2.應用場景不同:常見棧的應用場景包括括號問題的求解,表示式的轉換和求值,函式呼叫和遞迴實現,深度優先搜 索遍歷等;常見的佇列的應用場景包括計算機系統中各種資源的管理,訊息緩衝器的管理和廣度優先搜尋遍歷等。
3.順序棧能夠實現多棧空間共享,而順序佇列不能。
4.遍歷資料的速度不同:棧只能從頭部獲取資料,也就是最先放入的資料需要遍歷整個棧,最後才能取出來;而且遍歷資料的時候還需要為資料開闢臨時空間,保持資料在遍歷前的一致性。而佇列則不同,它基於地址指標進行遍歷,而且可以從頭部或者尾部開始遍歷,但不能同時遍歷;無需開闢臨時空間,因為在遍歷的過程中,不影響資料結構,所以其速度要快很多。