- 數(shù)組: 有序的元素序列悴势,將有限個元素按順序排列的集合窗宇。
- 鏈表:有序的元素序列,但不同于數(shù)組特纤,鏈表在內(nèi)存中不是連續(xù)存放的军俊,通過指針指向下一個元素。
- 棧:一種操作受限制的線性表捧存,其限制是僅能在一端進行插入和刪除粪躬。新添加的元素會被保存到棧頂,稱為入棧昔穴,刪除的時候移除棧頂?shù)牡谝粋€元素镰官,稱為出棧。后進先出吗货。
- 隊列: 一種操作受限制的線性表泳唠,其限制是僅能在前端進行刪除,后端進行插入宙搬。先進先出笨腥。
- 二分搜索樹: 一種具有層次結(jié)構(gòu)的有限集合。每個結(jié)點都有左右結(jié)點害淤,比結(jié)點大的在結(jié)點右邊,比結(jié)點小的在結(jié)點左邊拓售。這樣的特點使得查找效率很高效窥摄。
- 集合:由一堆無序的、 不重復(fù)的元素組成的集合础淤。
- 映射:通過<鍵崭放,值>方式存儲數(shù)據(jù),每個元素都有<鍵鸽凶,值>,通過鍵訪問元素币砂。
- 堆:特殊的樹形結(jié)構(gòu)。最大值在根玻侥,每個父節(jié)點都比子節(jié)點大决摧,稱為最大堆;根是最小值凑兰,每個父節(jié)點都比子節(jié)點小掌桩,稱為最小堆。
- 優(yōu)先隊列:一種特殊的隊列姑食,其特殊之處是根據(jù)優(yōu)先級出隊波岛,而不是先進先出。
- 前綴樹:n叉樹結(jié)構(gòu)音半,通過字符尋找下一個節(jié)點则拷。
- 并查集:集合與集合之間的運算贡蓖。比如兩個元素是否同一個集合;合并集合煌茬;
- 哈希表:類似映射斥铺。不同之處是:將key通過哈希函數(shù)轉(zhuǎn)成數(shù)字索引,再去訪問數(shù)組的元素宣旱。
- 圖:由n(n ≥ 0)個結(jié)點 組成的集合仅父。每個結(jié)點都可以指向其他結(jié)點。
數(shù)組
類型名稱: 數(shù)組 浑吟。
數(shù)據(jù)對象集: n(n ≥ 0)個元素構(gòu)成的有序序列 笙纤。
操作集: 整數(shù)i
表示位置,ElementType
為元素類型组力。
- 查找元素:
int find( ElementType e)
- 插入元素:
void insert(int i, ElementType e)
- 刪除元素:
ElementType remove(int i)
- 更新元素:
void set(int i, ElementType e)
- 訪問元素:
ElementType get(int i)
- 返回長度:
int length()
數(shù)組
鏈表
類型名稱: 鏈表省容。
數(shù)據(jù)對象集: n(n ≥ 0)個結(jié)點構(gòu)成的有限集合,每個結(jié)點帶有指向下一個元素的指針
操作集: 整數(shù) i
表示位置燎字,ElementType
為元素類型腥椒。
- 添加元素:
void insert(int i, ElementType e)
- 刪除元素:
ElementType remove(int i)
- 查找元素:
int find(ElementType e)
- 更新元素:
void set(int i, ElementType e)
- 訪問元素:
ElementType get(int i)
- 鏈表元素數(shù)量:
int length()
棧
類型名稱: 棧。
數(shù)據(jù)對象集: n(n ≥ 0)個構(gòu)成的有序序列元素候衍。
操作集: ElementType
為元素類型笼蛛。
- 入棧:
void push(ElementType e)
- 出棧:
ElementType pop()
- 棧頂元素:
ElementType peek()
- 元素數(shù)量:
int length()
棧
隊列
類型名稱: 隊列。
數(shù)據(jù)對象集: n(n ≥ 0)個構(gòu)成的有序序列元素蛉鹿。
操作集: ElementType
為元素類型滨砍。
- 進隊:
enqueue(ElementType e)
- 出隊:
ElementType dequeue()
- 隊首:
ElementType front()
- 是否空:
boolean isEmpty()
- 元素數(shù)量:
int length()
隊列
集合
類型名稱: 集合卫漫。
數(shù)據(jù)對象集: n(n ≥ 0)個元素構(gòu)成的有限集合瘩例。
操作集: ElementType
為元素類型。
- 添加:
void add(ElementType e)
- 刪除:
ElementType remove(ElementType e)
- 是否包含某個元素:
boolean contains(ElementType e)
- 是否為空:
boolean isEmpty()
- 長度:
int length()
集合
映射
類型名稱: 映射贫奠。
數(shù)據(jù)對象集: 每個元素都有<鍵他膳,值>,通過鍵訪問元素
操作集: KeyType
為鍵類型响逢,ValueType
為值類型。
- 添加:
void add(KeyTpe key, ValueType value)
- 訪問:
ValueType get(KeyType key)
- 修改:
void set(KeyTpe key, ValueType value)
- 刪除:
ValueType remove(KeyType key)
- 元素數(shù)量:
int length()
映射
二分搜索樹
類型名稱: 二分搜索樹棕孙。
數(shù)據(jù)對象集: n(n ≥ 0)個結(jié)點構(gòu)成的有限集合舔亭,每個結(jié)點都有左右指針指向它的子節(jié)點
操作集: ElementType
為元素類型。
- 插入:
void insert(ElementType e)
- 刪除:
remove(ElementType e)
- 查找:
ElementType find(ElementType e)
- 前序遍歷:
void preOrder()
- 中序遍歷:
void preOrder()
- 后序遍歷:
void preOrder()
- 層序遍歷:
void levelOrder()
- 結(jié)點數(shù)量:
int size()
二分搜索樹
前綴樹
類型名稱: 前綴樹蟀俊。
數(shù)據(jù)對象集: 每個節(jié)點都有一個指針指向下一個分歇,通過字符尋找下一個節(jié)點。
操作集: 默認為處理字母字符欧漱。
- 添加單詞:
void add(String word)
- 查詢是否有某個單詞:
boolean contains(String word)
- 是否包含某個前綴:
boolean isPrefix(String prefix)
- 單詞數(shù)量:
int size()
前綴樹
堆
類型名稱: 最大堆职抡。
數(shù)據(jù)對象集: n(n ≥ 0)個結(jié)點構(gòu)成的有限集合,通過索引關(guān)系訪問父節(jié)點以及左右結(jié)點
操作集: ElementType
為元素類型误甚。
- 添加:
void add(ElementType e)
- 刪除堆頂元素:
ElementType remove(ElementType e)
- 獲取堆頂元素:
ElementType get()
- 元素數(shù)量:
int lenght()
堆
優(yōu)先隊列
類型名稱: 優(yōu)先隊列缚甩。
數(shù)據(jù)對象集: n(n ≥ 0)個構(gòu)成的有序序列元素
操作集: ElementType
為元素類型谱净。
- 進隊:
enqueue(ElementType e)
- 出隊:
ElementType dequeue()
- 隊首:
ElementType front()
- 是否空:
boolean isEmpty()
- 元素數(shù)量:
int length()
在這里插入圖片描述
并查集
類型名稱: 并查集。
數(shù)據(jù)對象集: 元素 或 集合擅威。
操作集: ElementType
為元素類型 壕探。
- 是否同一個集合:
boolean isConnected(ElementType p, ElementType q)
- 合并集合:
void unionElement(ElementType p, ElementType q)
并查集
哈希表
類型名稱: 哈希表。
數(shù)據(jù)對象集: 有<鍵郊丛,值>的元素李请。
操作集: KeyType
為鍵類型,ValueType
為值類型厉熟。
- 添加:
void add(KeyTpe key, ValueType value)
- 訪問:
ValueType get(KeyType key)
- 修改:
void set(KeyTpe key, ValueType value)
- 刪除:
ValueType remove(KeyType key)
- 哈希函數(shù):
int hashCode(key)
- 元素數(shù)量:
int size()
哈希表
<h2 id="圖">圖</h2>
類型名稱: 圖导盅。
數(shù)據(jù)對象集: 結(jié)點。每個節(jié)點都可以指向其他結(jié)點揍瑟。
操作集: ElementType
為元素類型 白翻。
- 是否包含某個點:
boolean contains(ElementType v)
- v1點到v2點是否連通:
boolean isConnected(ElementType v1, ElementEtype v1)
- 添加點:
void addVertex(ElementType v)
- 添加線:
void addEdge(ElmentType v1, ElmentType v2)
- 刪除點:
ElementType removeVertex(v)
- 刪除線:
void removeEdge(ElementType v1, ElementType v2)
- 獲取點的線:
Array getEdge(v)
圖