線性表(有序表)
棧
隊列(單向、雙向)
字典(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 個孩子,葉子節點都在同一層)
有 環 否?
有 權 否?
有 方向 否?
連通(鄰接) 否?
有向無環圖
尋找路徑
帶權圖中的最短路徑(開發算法、跟蹤算法)