天天看點

資料結構快速回顧

線性表(有序表)

隊列(單向、雙向)

字典(KV,無序)

一般分為:客戶接口、實作

javadoc 生成

職責(方法用途)

前置(參數)、後置(傳回值)條件

斷言(測試用、生産環境下抛出異常)

根據角色 【使用者】

根據場景

生成 用例圖 輔助

CRC 【類責任協作卡】

UML 【統一模組化語言】

void push(newEntry)

T pop()

T peek()

boolean isEmpty()

void clear

平衡表達式:括号對稱等

中綴表達式 => 字尾表達式(圓括号處理:開圓括号為最低優先級運算符)

計算字尾表達式(不含有圓括号)

計算中綴表達式(兩個棧)

程式棧(Java棧)

鍊式棧

數組棧

向量棧

【結構:KV(鍵值對)】

void add(key, value)

V remove(key)

V getValue(key)

boolean contains(key)

Iterator getKeyIterator()

Iterator getValueIterator()

int getSize()

void clear()

快速确定下标(快速獲得 key 所在位置)

散列碼(hashCode)

注意:如果類重寫了 equals(),則也應該重寫 hashCode()

結果:将 散列碼 壓縮為散清單的 下标

沖突:開放位址法(雙散列)、拉鍊法(每個 key 對應多個 value 進行存儲)

前序周遊

中序周遊

後序周遊

廣度優先周遊

深度優先周遊

完全二叉樹(有右必有左)

平衡二叉樹(每個節點有高度相同的兩個子樹)

表達式樹(a / b + c)

決策樹(Yes || No)

二叉查找樹(類似二分查找)

堆(最大 / 最小)

文法樹

AVL 樹(不平衡時自動重排)

紅黑樹(根黑,紅父為黑,紅孩都為黑,每條樹枝都有相同個數的黑色節點)

B 樹(m 階多路查找樹:根無或 2~m 個孩子,内部節點有 m/2~m 個孩子,葉子節點都在同一層)

有 環 否?

有 權 否?

有 方向 否?

連通(鄰接) 否?

有向無環圖

尋找路徑

帶權圖中的最短路徑(開發算法、跟蹤算法)