陣列 鍊錶 堆疊 佇列

2021-09-26 09:27:21 字數 1364 閱讀 3531

1、陣列:

陣列是使用一塊連續的記憶體空間儲存資料,

儲存的資料的個數在分配記憶體的時候就是確定的:

訪問陣列中第 n 個資料的時間花費是 o(1) ;

但是要在陣列中查詢乙個指定的資料則是 o(n);

陣列應用場景:

1、資料比較少;

2、經常做的運算是按序號訪問資料元素;

3、構建線性表較穩定;

4、陣列更容易實現,任何高階語言都支援;

2、鍊錶

鍊錶是在非連續的記憶體單元中儲存資料,

並且通過指標將各個記憶體單元鏈結在一起,最有乙個節點的指標指向 null ;

鍊錶不需要提前分配固定大小儲存空間,當需要儲存資料的時候分配一塊記憶體並將這塊記憶體插入鍊錶中;

在鍊錶中查詢第 n 個資料以及查詢指定的資料的時間複雜度是 o(n) ,

但是插入和刪除資料的時間複雜度是 o(1) ;

鍊錶應用場景:

1、對線性表的長度或者規模難以估計;

2、 頻繁做插入刪除操作;

3、構建動態性比較強的線性表;

3、棧

棧實現了一種後進先出的語義 (lifo) ,可以使用陣列或者是鍊錶來實現它:

對於棧中的資料的所有操作都是在棧的頂部完成的,

只可以檢視棧頂部的資料,只能夠向棧的頂部壓入資料,也只能從棧的頂部彈出資料。

棧應用場景:

1、括號問題的求解;

2、表示式的轉換和求值;

3、函式呼叫和遞迴實現;

4、深度優先搜尋遍歷等;

4、佇列

佇列實現了先入先出的語義 (fifo) 。佇列也可以使用陣列和鍊錶來實現:

佇列只允許在隊尾新增資料,在隊頭刪除資料,但是可以檢視隊頭和隊尾的資料;

佇列的儲存方式可以使用線性表進行儲存,也可以使用鍊錶進行儲存。

還有一種是雙端佇列,在兩端都可以插入和刪除:

佇列應用場景:

1、計算機系統中各種資源的管理;

2、訊息緩衝器的管理;

3、廣度優先搜尋遍歷等;

5、堆

堆像一棵倒過來的樹

堆是一種經過排序的樹形資料結構,每個結點都有乙個值。

通常我們所說的堆的資料結構,是指二叉堆。

堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是乙個堆。

堆可以分為最大堆和最小堆:

最大堆:每個父節點都大於孩子節點

最小堆:每個父節點都小於孩子節點

堆應用場景:

1、優先順序佇列的實現;

2、大資料的處理;

3、堆排的實現:

陣列 鍊錶 堆疊和佇列

資料結構 是指相互之間存在一種或多種特定關係的資料元素的集合。聽起來是不是很抽象,簡單理解 資料結構就是描述物件間邏輯關係的學科。比如 佇列就是一種先進先出的邏輯結構,棧是一種先進後出的邏輯結構,家譜是一種樹形的邏輯結構!初學資料結構的時候很不理解為什麼有 棧 這個東西 佇列很容易理解 無論購物就餐...

陣列鍊錶堆疊和佇列

陣列鍊錶堆疊和佇列 陣列鍊錶堆疊和佇列是最基本的資料結構,任何程式都會涉及到其中的一種或多種。陣列是最最基本的資料結構,很多語言都內建支援陣列。陣列是使用一塊連續的記憶體空間儲存資料,儲存的資料的個數在分配記憶體的時候就是確定的 圖1.1包含n 個資料的陣列 訪問陣列中第 n個資料的時間花費是 o ...

陣列 鍊錶 堆疊和佇列

資料結構 是指相互之間存在一種或多種特定關係的資料元素的集合。聽起來是不是很抽象,簡單理解 資料結構就是描述物件間邏輯關係的學科。比如 佇列就是一種先進先出的邏輯結構,棧是一種先進後出的邏輯結構,家譜是一種樹形的邏輯結構!初學資料結構的時候很不理解為什麼有 棧 這個東西 佇列很容易理解 無論購物就餐...