什么是数据结构?
◼数据结构是计算机存储、组织数据的方式
- 线性表(数组、链表、栈、队列、哈希表)
- 二叉树(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