1. 数据结构
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
线性表:
将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构(简称线性表)
“一对一”的逻辑关系:
- 第一个数据元素没有前驱,这个数据元素被称为开始节点;
- 最后一个数据元素没有后继,这个数据元素被称为终端节点;
- 除了第一个和最后一个数据元素外,其他数据元素有且仅有一个前驱和一个后继
数据中的元素 3 来说,它的直接前驱是 2 ,此元素的前驱元素有 2 个,分别是 1 和 2;同理,此元素的直接后继是 4 ,后继元素也有 2 个,分别是 4 和 5。
通俗的理解
把所有数据用一根线儿串起来,再存储到物理空间中。
左侧是“串”起来的数据,右侧是空闲的物理空间。把这“一串儿”数据放置到物理空间,我们可以选择以下两种方式:
顺序存储 链式存储
顺序存储的线性表,所有元素 链式存储的线性表 ,所有元素
的内存地址时连续的,这种数 的内存地址不一定是连续的,这
据结构称为数组。 种数据结构称为链表。
2. 动态数组
int[] array = new int[]{11,12,13}
内存结构:
特点:
- 在线性表中逻辑上相邻的数据元素,在物理存储上也是相邻的。
- 存储密度高,但要预先分配“足够应用”的存储空间,这可能会造成存储空间的浪费。
- 便于随机存储。
- 不便于插入和删除操作,这是因为在顺序表上进行的插入和删除操作会引起大量数据元素的移动。
接口设计:
◼ int size(); // 元素的数量
◼ boolean isEmpty(); // 是否为空
◼ boolean contains(E element); // 是否包含某个元素
◼ void add(E element); // 添加元素到最后面
◼ E get(int index); // 返回index位置对应的元素
◼ E set(int index, E element); // 设置index位置的元素
◼ void add(int index, E element); // 往index位置添加元素
◼ E remove(int index); // 删除index位置对应的元素
◼ int indexOf(E element); // 查看元素的位置
◼ void clear(); // 清除所有元素
3. 对象数组
Object[] obj = new Object[7];
参考:
[1]: 数据结构之线性表
[2]: 什么是线性表