顺序表存储结构
存储结构
顺序结构
定义
顺序表一一用顺序存储的方式实现线性表顺序存储。把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。
基本操作的实现
静态分配
代码样例:
如果删去设置数据元素的默认值的步骤。以下代码会出脏数据。
问题
如果“静态数组”存满了怎么办?
动态分配
代码功能
内存展示:
顺序表的特点:
- 随机访问,即可以在 o(1) 时间内找到第i个元素。
- 存储密度高,每个节点只存储数据元素。
- 拓展容量不方便(即便采用动态分配的方式实现,拓展长度的时间复杂度也比较高)。
- 插入、删除操作不方便,需要移动大量元素。
顺序表小结
顺序表的插入删除
插入
ListInsert(&Li,e): 插入操作。在表L中的第i个位置上插入指定元素e。
代码实现:
内存分配:
我们现在在b,d元素之间插入c,表示在data[1]后面插入一个元素,则原来data[2]及以后的元素全部后移一位,然后将c插入到data[2]中。然后length+1。
整体代码实现:
代码改进:用户交互时给予提示
删除
ListDelete(&L,i,&e): 删除操作。删除表L中第i个位置的元素并用e返回删除元素的值。
将元素c删除,并将后面的元素依次向前移一位。
代码实现:
小结
顺序表的查找
按位查找
GetElem(L,i): 按位查找操作。获取表L中第i个位置的元素的值。、
静态分配代码:
动态分配代码:
按值查找
按值查找操作。在表L中查找具有给定关键字值的元素LocateElem(L,e):