數據結構入門--筆記

一、基本概念
1.數據:被計算機操作的信息載體。例如字符串、聲音
2.數據元素:數據的基本單位。例如一個字符串,一段聲音
3.數據結構:數據之間的組織形式
二、數據結構
1.邏輯結構:是抽象的數學模型。鏈表有指針域,數據域。
2.存儲結構:是數據實際在硬件上的表現形式。
3.數據運算:
4.分類(邏輯):
線性結構:一個接一個。例如棧、隊列
非線性結構:多對多,不固定。樹、圖
5.存儲方式(物理):
順序:相鄰的數據,存儲地址也相鄰
鏈式:相鄰的數據,不要求地址相鄰,但要增加指針域指向下個節點地址
三、常用的數據結構
1.數組:同一種類型的數據有序組織
2.棧:數據只在同一端進行增刪操作。
3.隊列:隊尾進行插入,隊頭進行刪除。循環隊列,插入時,隊尾指針加1然後模隊長。刪除時對隊頭進行相同運算。判斷隊滿,若隊尾指針指向隊頭則隊滿。
4.鏈表:使用鏈式存儲結構。
5.樹:非線性,節點最多有一個前驅,多個後繼節點。
6.圖:節點與節點爲多對多關係
7.堆:特殊的樹形結構,父節點的值永遠大於或小於子節點,而根節點則是最大或最小的節點。所有子樹也都是堆。
四、線性
1.定義:一組數據的有限序列。
2.順序表結構:按照順序存儲的線性表
缺點:插入或刪除需移動大量數據效率低、不適合大數據量因爲需要連續的存儲空間。插入期望值n/2,刪除期望值(n-1)/2
優點:檢索快
3.鏈表結構:包含數據部分(數據域)、地址部分(指針域)。數據域存放實際的數據,指針域存放下一個節點的地址。


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)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章