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