數據結構和算法

數據結構和算法算法

數據+數據元之間的關係+數據上獲得操做數組

線性表數據結構

按照存儲方式分類數據結構和算法

1.順序存儲:順序表、棧、隊列。隨機訪問效率高、隨機插入效率低函數

2.鏈式存儲:鏈表。隨機訪問效率低、隨機插入效率高(定位+修改指針)編碼

按照訪問方式spa

1.隨機訪問:通常線性表。鏈表、順序表操作系統

2.受限訪問:受限線性表。棧、隊列3d

各結構細節指針

1.鏈表

數據結構的入門結構,樹和圖的基礎,還能夠實現棧和隊列

1.1經常使用操做:插入(頭插和尾插),刪除結點,查找,排序,反轉等

1.2單鏈表中帶頭結點的好處、循環鏈表中帶尾結點的好處

1.3衍生複雜結構:雙向鏈表、循環鏈表、跳躍鏈表

2.棧

只有一端能夠操做的數據結構,如棧變量,最廣泛變量,函數棧,棧溢出(stackoverflow)

2.1經常使用操做:入棧和出棧

2.2衍生結構:順序棧、鏈棧、共享棧

2.3棧與遞歸的關係,棧的應用(數值表達式的計算,前綴、中綴、後綴表達式,括號匹配)

3.隊列

兩端分別只能進行插入和刪除操做,操做系統中普遍使用

3.1經常使用操做:一端插入、另外一端刪除(入隊,出隊)

3.2判空判滿條件:標誌位法、犧牲元素空間法

3.3衍生結構法:循環隊列、鏈隊、雙端隊列

樹-二叉樹

基本概念及結論

1.深度、高度、層次,最多、最少節點數,度(n0=n2+1),(帶權)路徑長度,滿二叉樹,徹底二叉樹

2.存儲方式:順序存儲(數組,父子結點下標規律),鏈式存儲(二叉鏈表)

遍歷

1.按照順序分類:先序遍歷,中序遍歷,後序遍歷,層次遍歷

2.按照編碼方式分類:遞歸和非遞歸

其餘知識點

1.最優二叉樹(哈夫曼樹,帶權路徑長度最短),數據壓縮和編碼

2.樹和森林的轉換

3.變態二叉樹

3.1二叉排序樹(二叉搜索樹)

3.2二叉平衡數。是二叉排序樹的強大版本,可以自平衡,避免二叉排序樹退化爲一個鏈表。其插入、查找、刪除的最好最壞時間複雜度都爲O(logN)

3.3紅黑樹、敗者樹、KD樹、線段樹

3.4堆:全部父節點的值都不大(小)於子節點的值的徹底二叉樹稱爲小(大)頂堆。

3.5非二叉樹的經典:B樹(B-tree)、B+樹(B+tree)、B*樹、Trie樹、R樹、M樹

圖-結構

分類

有向圖&無向圖,徹底圖,(強)連通圖

存儲結構

鄰接矩陣:n階方陣,適合稠密圖;對於無向圖:對稱矩陣;對於有向圖:行是出度,列是入度

鄰接表:適合稀疏圖,不惟一,頂點表+鄰接表

遍歷

深度優先遍歷(藉助棧)

廣度優先遍歷(藉助隊列)

相關的重要算法

最小生成樹算法:即權值最小的生成樹,Prim算法,Kruskal算法

拓撲排序:不惟一

最短路徑:Dijkstra算法、Floyd算法

關鍵路徑

相關文章
相關標籤/搜索