數據結構和算法算法
數據+數據元之間的關係+數據上獲得操做數組
線性表數據結構
按照存儲方式分類數據結構和算法
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算法
關鍵路徑