資料結構入門 筆記

2021-07-05 04:29:15 字數 2132 閱讀 8438

一、基本概念

1.資料:被計算機操作的資訊載體。例如字串、聲音

2.資料元素:資料的基本單位。例如乙個字串,一段聲音

3.資料結構:資料之間的組織形式

二、資料結構

1.邏輯結構:是抽象的數學模型。鍊錶有指標域,資料域。

2.儲存結構:是資料實際在硬體上的表現形式。

3.資料運算:

4.分類(邏輯):

線性結構:乙個接乙個。例如棧、佇列

非線性結構:多對多,不固定。樹、圖

5.儲存方式(物理):

三、常用的資料結構

1.陣列:同一種型別的資料有序組織

2.棧:資料只在同一端進行增刪操作。

3.佇列:隊尾進行插入,隊頭進行刪除。迴圈佇列,插入時,隊尾指標加1然後模隊長。刪除時對隊頭進行相同運算。判斷隊滿,若隊尾指標指向隊頭則隊滿。

4.鍊錶:使用鏈式儲存結構。

5.樹:非線性,節點最多有乙個前驅,多個後繼節點。

6.圖:節點與節點為多對多關係

7.堆:特殊的樹形結構,父節點的值永遠大於或小於子節點,而根節點則是最大或最小的節點。所有子樹也都是堆。

四、線性

1.定義:一組資料的有限序列。

2.順序表結構:按照順序儲存的線性表

缺點:插入或刪除需移動大量資料效率低、不適合大資料量因為需要連續的儲存空間。插入期望值n/2,刪除期望值(n-1)/2

優點:檢索快

4.棧結構:只能在一端(棧頂)進行操作。filo先進後出。

清空棧只要將棧頂設為0.

5.佇列結構:在隊尾插入,隊頭刪除。

6.串:資料元素為字元的線性表

樸素匹配:匹配長為n的主串和長為m的子串,最好情況比較次數期望值(n+m)/2,時間複雜度o(n+m)。最壞情況時間複雜度o(n*m),平均次數(n-m+2)m/2

改進匹配:

五、非線性

1.樹結構:非線性層次關係。除了根節點其他節點只有乙個前驅。

有序樹:節點從左向右有序排列。無序樹反之

森林:樹的集合。

2.二叉樹:每個節點最多只能有兩個節點,且是有序樹。

完全二叉樹:只有最後一層可以不是滿節點的。即只有上一層滿節點後才能向下一層新增節點。完全二叉樹可以直接使用順序儲存方式,順序儲存方式節點的父節點為,該節點位置除2(去掉餘數)。深度為[log2n]+1

3.二叉樹遍歷:

先序遍歷:先訪問根節點,在對節點的左子樹線序遍歷,最後對節點的有子樹先序遍歷。

中序遍歷:先對左子樹中序遍歷,在訪問根節點,再對右子樹先序遍歷

後序遍歷:先對對左子樹後序遍歷,再對右子樹後序遍歷,再訪問根節點

總結方法:經過次數法(按照逆時針畫邊緣線,經過一次訪問為先序,兩次中序,三次後序)

4.哈夫曼編碼:

5.圖:資料元素之間是多對多關係(任意關聯)。

頂點:資料元素

邊:連線頂點

無向圖:相鄰頂點間沒有順序要求

有向圖:與無向圖反之

頂點的度:連線的邊的數量

無向完全圖:兩兩相連。邊數為 n(n-1)/2

有向完全圖:兩兩相連,且每兩點間有兩條相反方向的邊。邊數為無向完全圖兩倍

連通圖:任意兩點間連通(只要可以到達就是連通),即所有點在一條路上

連通分量:連通圖的連通分量只能為自身。非連通圖的分量可以多個

強連通圖:有向圖中,點之間能互相連通(有向)則為強連通圖

強連通分量:

權:邊的值

網:帶權值的圖

鄰接矩陣:對圖的資料儲存。無向鄰接矩陣是以斜對角線對稱的。有向鄰接矩陣則不同

6.圖的遍歷:

深度優先:用鄰接矩陣儲存,時間複雜度為o(n*n)。鄰接表儲存,時間複雜度為(n+e)

廣度優先:同上

7.生成樹:包含所有節點,並且邊只有n-1條。連通圖的生成樹為極小連通子圖。

8.最小生成樹:在網中,邊有權值

普里姆演算法:先確定乙個點,再找與現有點相連權最小的點,連起來。(從點找)。時間複雜度為o(n*n)

克魯斯卡爾演算法:把所有點畫出來,選出當前兩點間權值最小的邊,連起來(保證不會形成迴路)。直到所有點都有邊。時間複雜度為o(eloge)

筆記 資料結構入門(二)

所用教材為 資料結構教程第4版 李春葆 主編 1 資料元素之間的關係有邏輯關係和物理關係,對應的運算有邏輯結構上的運算 抽象運算 和具體儲存結構上的運算 運算實現 演算法是具體儲存結構上實現某個抽象運算 2 確切地說,演算法是對特定問題的求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示計算...

資料結構入門

資料 data 是客觀事物的符號表示。在電腦科學中指的是所有能輸入到計算機中並被電腦程式處理的符號的總稱。資料元素 data element 是資料的基本單位,在程式中通常作為乙個整體來進行考慮和處理。乙個資料元素可由若干個資料項 data item 組成。資料項是資料的不可分割的最小單位。資料項是...

資料結構入門

需要明確的幾個問題 1.什麼是資料結構?資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及它們之間的關係和操作等相關問題的學科。簡單的來說數 據結構就是關係,就是資料元素相互之間存在的一種或多種特定關係的集合。2.資料結構研究什麼?1 資料的儲存 2 資料的操作 3.學習資料結構有什麼作用...