數(shù)據(jù)結(jié)構(gòu)總覽(1)
數(shù)據(jù)結(jié)構(gòu)
概念
數(shù)據(jù)
數(shù)據(jù)元素,數(shù)據(jù)項(xiàng)
數(shù)據(jù)對(duì)象
數(shù)據(jù)類(lèi)型
+ 原子類(lèi)型
+ 結(jié)構(gòu)類(lèi)型
+ 抽象類(lèi)型
數(shù)據(jù)結(jié)構(gòu)定義
數(shù)據(jù)元素之間存在一個(gè)或者多個(gè)特定關(guān)系的元素集合
邏輯結(jié)構(gòu)
線(xiàn)性,線(xiàn)性表,棧,隊(duì)列,數(shù)組
非線(xiàn)性,樹(shù),圖,集合
物理結(jié)構(gòu)
順序,鏈表,索引,散列
算法
五要素,有窮性,正確性,可行性,輸入和輸出
時(shí)間復(fù)雜度:
O(1)? O(logN) O(N)? O(NlogN) O(N^2)?O(N^3)?O(2^N)?O(3^N) O(N!)? O(N^N)???
空間復(fù)雜度?
?O(1) : 算法原地工作
線(xiàn)性表
順序表
順序表的基本操作
順序表的操作,新增,刪除,查找
鏈表
單鏈表
雙鏈表
循環(huán)鏈表
鏈表的操作,新增,刪除,查找,頭插法,尾插法,頭結(jié)點(diǎn)
靜態(tài)鏈表
線(xiàn)性表的順序表和鏈表對(duì)比
棧,隊(duì)列,矩陣
棧
棧的順序存儲(chǔ)
棧的鏈?zhǔn)酱鎯?chǔ)
共享?xiàng)?/p>
棧的基本操作push.,pop,empty
棧卡特蘭公式
隊(duì)列
隊(duì)列的順序存儲(chǔ)
隊(duì)列的鏈表存儲(chǔ)
隊(duì)列的的基本操作,新增,刪除,pop,push
雙端隊(duì)列
輸出和輸入雙端隊(duì)列
棧和隊(duì)列的應(yīng)用
棧
括號(hào)匹配
計(jì)算表達(dá)式(前綴表達(dá)式,后綴表達(dá)式)
樹(shù)的非遞歸遍歷
函數(shù)調(diào)用棧
隊(duì)列
樹(shù)的層序遍歷
打印機(jī)
操作系統(tǒng)中的任務(wù)調(diào)用
多維數(shù)組,矩陣,稀疏矩陣
多維數(shù)組的下標(biāo)表示
對(duì)稱(chēng)矩陣和矩陣的存儲(chǔ)
三角矩陣,上三角矩陣,下三家矩陣
對(duì)三角矩陣
字符串
字符串,子串
子串的匹配
暴力匹配
KMP算法
next數(shù)組
nextval數(shù)組
樹(shù)
樹(shù)的基本概念
根,父親,雙親,孩子,祖父,子孫,兄弟,堂兄弟,葉子結(jié)點(diǎn),非葉子結(jié)點(diǎn)
高度,層,深度
樹(shù)的分支,樹(shù)的度,有序樹(shù),非有序樹(shù)
N個(gè)節(jié)點(diǎn)的最小高度 h = log?m(n*(m+1) -1),m 為樹(shù)點(diǎn)的度
二叉樹(shù)
度為二的樹(shù)
二叉樹(shù)
完全二叉樹(shù),滿(mǎn)二叉樹(shù)
完全二叉樹(shù),滿(mǎn)二叉樹(shù)一些特性
排序樹(shù)
平衡二叉樹(shù)
樹(shù)的遍歷和線(xiàn)索化
樹(shù)的遍歷(遞歸和非遞歸算法)
樹(shù)的前序遍歷
樹(shù)的后續(xù)遍歷
樹(shù)的中序遍歷
樹(shù)的線(xiàn)索化(利用度為0的節(jié)點(diǎn)和度為1的節(jié)點(diǎn)的左右子樹(shù)為空,建立前驅(qū)和后驅(qū)線(xiàn)索)
樹(shù)的前序線(xiàn)索
樹(shù)的后續(xù)線(xiàn)索
樹(shù)的中序線(xiàn)索
樹(shù)和森林
樹(shù)和森林的存儲(chǔ)
雙親表示法
孩子表示法(鏈表法)
孩子兄弟表示法
樹(shù)和森林的遍歷
樹(shù)的后序遍歷? = 森林的中序遍歷 = 二叉樹(shù)的中序遍歷
樹(shù)的先序遍歷? = 森林的先序遍歷 = 二叉樹(shù)的先序遍歷
樹(shù)的應(yīng)用
哈夫曼樹(shù)
帶權(quán)路徑長(zhǎng)度
哈夫曼編碼
并查集