數據結構的抽象數據類型描述


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

javascript 描述
java 描述
動畫描述


數組

類型名稱: 數組 。
數據對象集: n(n ≥ 0)個元素構成的有序序列 。
操作集: 整數i表示位置,ElementType 為元素類型。

  1. 查找元素:int find( ElementType e)
  2. 插入元素:void insert(int i, ElementType e)
  3. 刪除元素:ElementType remove(int i)
  4. 更新元素:void set(int i, ElementType e)
  5. 訪問元素:ElementType get(int i)
  6. 返回長度:int length()
    數組

鏈表

類型名稱: 鏈表。
數據對象集: n(n ≥ 0)個結點構成的有限集合,每個結點帶有指向下一個元素的指針
操作集: 整數 i 表示位置,ElementType 為元素類型。

  1. 添加元素:void insert(int i, ElementType e)
  2. 刪除元素:ElementType remove(int i)
  3. 查找元素:int find(ElementType e)
  4. 更新元素:void set(int i, ElementType e)
  5. 訪問元素:ElementType get(int i)
  6. 鏈表元素數量: int length()

鏈表


類型名稱: 棧。
數據對象集: n(n ≥ 0)個構成的有序序列元素。
操作集: ElementType 為元素類型。

  1. 入棧:void push(ElementType e)
  2. 出棧:ElementType pop()
  3. 棧頂元素:ElementType peek()
  4. 元素數量:int length()
    棧

隊列

類型名稱: 隊列。
數據對象集: n(n ≥ 0)個構成的有序序列元素。
操作集: ElementType 為元素類型。

  1. 進隊:enqueue(ElementType e)
  2. 出隊:ElementType dequeue()
  3. 隊首:ElementType front()
  4. 是否空:boolean isEmpty()
  5. 元素數量:int length()
    隊列



集合

類型名稱: 集合。
數據對象集: n(n ≥ 0)個元素構成的有限集合。
操作集: ElementType 為元素類型。

  1. 添加:void add(ElementType e)
  2. 刪除:ElementType remove(ElementType e)
  3. 是否包含某個元素:boolean contains(ElementType e)
  4. 是否為空:boolean isEmpty()
  5. 長度:int length()
    集合



映射

類型名稱: 映射。
數據對象集: 每個元素都有<鍵,值>,通過鍵訪問元素
操作集: KeyType 為鍵類型,ValueType 為值類型。

  1. 添加:void add(KeyTpe key, ValueType value)
  2. 訪問:ValueType get(KeyType key)
  3. 修改:void set(KeyTpe key, ValueType value)
  4. 刪除:ValueType remove(KeyType key)
  5. 元素數量:int length()
    映射



二分搜索樹

類型名稱: 二分搜索樹。
數據對象集: n(n ≥ 0)個結點構成的有限集合,每個結點都有左右指針指向它的子節點
操作集: ElementType 為元素類型。

  1. 插入:void insert(ElementType e)
  2. 刪除:remove(ElementType e)
  3. 查找:ElementType find(ElementType e)
  4. 前序遍歷:void preOrder()
  5. 中序遍歷:void preOrder()
  6. 后序遍歷:void preOrder()
  7. 層序遍歷:void levelOrder()
  8. 結點數量:int size()
    二分搜索樹



前綴樹

類型名稱: 前綴樹。
數據對象集: 每個節點都有一個指針指向下一個,通過字符尋找下一個節點。
操作集: 默認為處理字母字符。

  1. 添加單詞:void add(String word)
  2. 查詢是否有某個單詞:boolean contains(String word)
  3. 是否包含某個前綴:boolean isPrefix(String prefix)
  4. 單詞數量:int size()
    前綴樹



類型名稱: 最大堆。
數據對象集: n(n ≥ 0)個結點構成的有限集合,通過索引關系訪問父節點以及左右結點
操作集: ElementType 為元素類型。

  1. 添加:void add(ElementType e)
  2. 刪除堆頂元素:ElementType remove(ElementType e)
  3. 獲取堆頂元素:ElementType get()
  4. 元素數量:int lenght()
    堆



優先隊列

類型名稱: 優先隊列。
數據對象集: n(n ≥ 0)個構成的有序序列元素
操作集: ElementType 為元素類型。

  1. 進隊:enqueue(ElementType e)
  2. 出隊:ElementType dequeue()
  3. 隊首:ElementType front()
  4. 是否空:boolean isEmpty()
  5. 元素數量:int length()
    在這里插入圖片描述



並查集

類型名稱: 並查集。
數據對象集: 元素 或 集合。
操作集: ElementType 為元素類型 。

  1. 是否同一個集合:boolean isConnected(ElementType p, ElementType q)
  2. 合並集合:void unionElement(ElementType p, ElementType q)
    並查集



哈希表

類型名稱: 哈希表。
數據對象集: 有<鍵,值>的元素。
操作集: KeyType 為鍵類型,ValueType 為值類型。

  1. 添加:void add(KeyTpe key, ValueType value)
  2. 訪問:ValueType get(KeyType key)
  3. 修改:void set(KeyTpe key, ValueType value)
  4. 刪除:ValueType remove(KeyType key)
  5. 哈希函數:int hashCode(key)
  6. 元素數量:int size()
    哈希表



類型名稱: 圖。
數據對象集: 結點。每個節點都可以指向其他結點。
操作集: ElementType 為元素類型 。

  1. 是否包含某個點:boolean contains(ElementType v)
  2. v1點到v2點是否連通:boolean isConnected(ElementType v1, ElementEtype v1)
  3. 添加點:void addVertex(ElementType v)
  4. 添加線:void addEdge(ElmentType v1, ElmentType v2)
  5. 刪除點:ElementType removeVertex(v)
  6. 刪除線:void removeEdge(ElementType v1, ElementType v2)
  7. 獲取點的線:Array getEdge(v)
    圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM