【數據結構與算法】動態數組

什麼是數據結構?

◼數據結構是計算機存儲、組織數據的方式

  • 線性表(數組、鏈表、棧、隊列、哈希表)
    線性表
  • 二叉樹(AVL樹、紅黑樹、B樹、堆、Trie哈夫曼樹、並查集)
    二叉樹
  • 鄰接矩陣、鄰接表
    圖形結構

◼在實際應用中,根據使用場景來選擇最合適的數據結構

線性表

◼線性表是具有n個相同類型元素的有限序列(n ≥ 0)
線性表結構

  • a1 是首節點(首元素), an 是尾結點(尾元素)
  • a1 是 a2 的前驅, a2 是 a1 的後繼

◼ 常見的線性表有

  • 數組
  • 鏈表
  • 隊列
  • 哈希表(散列表)
數組(Array)

◼ 數組是一種順序存儲的線性表,所有元素的內存地址是連續的
定義數組堆棧空間示意圖
◼在很多編程語言中,數組都有個致命的缺點:無法動態修改容量
◼實際開發中,我們更希望數組的容量是可以動態改變的

動態數組
動態數組(Dynamic Array)接口設計
int size();//元素的數量
boolean isEmpty();//是否爲空
boolean contains(Eelement);//是否包含某個元素
void add(Eelement);//添加元素到最後面
E get(intindex);//返回index位置對應的元素
E set(intindex, Eelement);//設置index位置的元素
void add(intindex, Eelement);//往index位置添加元素
E remove(intindex);//刪除index位置對應的元素
int indexOf(Eelement);//查看元素的位置
void clear();//清除所有元素
動態數組的設計

動態數據的設計◼在 Java 中,成員變量會自動初始化,比如

  • int 類型自動初始化爲0
  • 對象類型自動初始化爲 null
添加元素-add(E element)

添加元素

刪除元素-remove(int index)

刪除元素

添加元素-add(int index, E element)

添加元素

擴容

擴容

對象數組

定義對象數組對象數組模型

JDK中內置了一個動態數組類:java.util.ArrayList
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章