- 數組: 有序的元素序列,將有限個元素按順序排列的集合。
- 鏈表:有序的元素序列,但不同於數組,鏈表在內存中不是連續存放的,通過指針指向下一個元素。
- 棧:一種操作受限制的線性表,其限制是僅能在一端進行插入和刪除。新添加的元素會被保存到棧頂,稱為入棧,刪除的時候移除棧頂的第一個元素,稱為出棧。后進先出。
- 隊列: 一種操作受限制的線性表,其限制是僅能在前端進行刪除,后端進行插入。先進先出。
- 二分搜索樹: 一種具有層次結構的有限集合。每個結點都有左右結點,比結點大的在結點右邊,比結點小的在結點左邊。這樣的特點使得查找效率很高效。
- 集合:由一堆無序的、 不重復的元素組成的集合。
- 映射:通過<鍵,值>方式存儲數據,每個元素都有<鍵,值>,通過鍵訪問元素。
- 堆:特殊的樹形結構。最大值在根,每個父節點都比子節點大,稱為最大堆;根是最小值,每個父節點都比子節點小,稱為最小堆。
- 優先隊列:一種特殊的隊列,其特殊之處是根據優先級出隊,而不是先進先出。
- 前綴樹:n叉樹結構,通過字符尋找下一個節點。
- 並查集:集合與集合之間的運算。比如兩個元素是否同一個集合;合並集合;
- 哈希表:類似映射。不同之處是:將key通過哈希函數轉成數字索引,再去訪問數組的元素。
- 圖:由n(n ≥ 0)個結點 組成的集合。每個結點都可以指向其他結點。
數組
類型名稱: 數組 。
數據對象集: n(n ≥ 0)個元素構成的有序序列 。
操作集: 整數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()

鏈表
類型名稱: 鏈表。
數據對象集: n(n ≥ 0)個結點構成的有限集合,每個結點帶有指向下一個元素的指針
操作集: 整數 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) - 鏈表元素數量:
int length()

棧
類型名稱: 棧。
數據對象集: n(n ≥ 0)個構成的有序序列元素。
操作集: ElementType 為元素類型。
- 入棧:
void push(ElementType e) - 出棧:
ElementType pop() - 棧頂元素:
ElementType peek() - 元素數量:
int length()

隊列
類型名稱: 隊列。
數據對象集: n(n ≥ 0)個構成的有序序列元素。
操作集: ElementType 為元素類型。
- 進隊:
enqueue(ElementType e) - 出隊:
ElementType dequeue() - 隊首:
ElementType front() - 是否空:
boolean isEmpty() - 元素數量:
int length()

集合
類型名稱: 集合。
數據對象集: n(n ≥ 0)個元素構成的有限集合。
操作集: ElementType 為元素類型。
- 添加:
void add(ElementType e) - 刪除:
ElementType remove(ElementType e) - 是否包含某個元素:
boolean contains(ElementType e) - 是否為空:
boolean isEmpty() - 長度:
int length()

映射
類型名稱: 映射。
數據對象集: 每個元素都有<鍵,值>,通過鍵訪問元素
操作集: KeyType 為鍵類型,ValueType 為值類型。
- 添加:
void add(KeyTpe key, ValueType value) - 訪問:
ValueType get(KeyType key) - 修改:
void set(KeyTpe key, ValueType value) - 刪除:
ValueType remove(KeyType key) - 元素數量:
int length()

二分搜索樹
類型名稱: 二分搜索樹。
數據對象集: n(n ≥ 0)個結點構成的有限集合,每個結點都有左右指針指向它的子節點
操作集: ElementType 為元素類型。
- 插入:
void insert(ElementType e) - 刪除:
remove(ElementType e) - 查找:
ElementType find(ElementType e) - 前序遍歷:
void preOrder() - 中序遍歷:
void preOrder() - 后序遍歷:
void preOrder() - 層序遍歷:
void levelOrder() - 結點數量:
int size()

前綴樹
類型名稱: 前綴樹。
數據對象集: 每個節點都有一個指針指向下一個,通過字符尋找下一個節點。
操作集: 默認為處理字母字符。
- 添加單詞:
void add(String word) - 查詢是否有某個單詞:
boolean contains(String word) - 是否包含某個前綴:
boolean isPrefix(String prefix) - 單詞數量:
int size()

堆
類型名稱: 最大堆。
數據對象集: n(n ≥ 0)個結點構成的有限集合,通過索引關系訪問父節點以及左右結點
操作集: ElementType 為元素類型。
- 添加:
void add(ElementType e) - 刪除堆頂元素:
ElementType remove(ElementType e) - 獲取堆頂元素:
ElementType get() - 元素數量:
int lenght()

優先隊列
類型名稱: 優先隊列。
數據對象集: n(n ≥ 0)個構成的有序序列元素
操作集: ElementType 為元素類型。
- 進隊:
enqueue(ElementType e) - 出隊:
ElementType dequeue() - 隊首:
ElementType front() - 是否空:
boolean isEmpty() - 元素數量:
int length()

並查集
類型名稱: 並查集。
數據對象集: 元素 或 集合。
操作集: ElementType 為元素類型 。
- 是否同一個集合:
boolean isConnected(ElementType p, ElementType q) - 合並集合:
void unionElement(ElementType p, ElementType q)

哈希表
類型名稱: 哈希表。
數據對象集: 有<鍵,值>的元素。
操作集: KeyType 為鍵類型,ValueType 為值類型。
- 添加:
void add(KeyTpe key, ValueType value) - 訪問:
ValueType get(KeyType key) - 修改:
void set(KeyTpe key, ValueType value) - 刪除:
ValueType remove(KeyType key) - 哈希函數:
int hashCode(key) - 元素數量:
int size()

圖
類型名稱: 圖。
數據對象集: 結點。每個節點都可以指向其他結點。
操作集: 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)

