什麼是數據結構?
◼數據結構是計算機存儲、組織數據的方式
- 線性表(數組、鏈表、棧、隊列、哈希表)
- 二叉樹(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