线性表
1.线性表
1.2 线性表是什么?
线性表使具有 相同数据类型的n(n≥0)个 数据元素的 有限序列,其中n为 表长,当n=0时线性表是一个 空表。若用L命名线性表,则一般表示为
$$
L = (a_1,a_2,…,a_i,…,a_n)
$$
概念:
- $a_i$是线性表中的“第i个”元素线性表中的
位序 - $a_1$是
表头元素;$a_n$是表尾元素 - 除第一个元素外,每个元素有且仅有一个
直接前驱;除最后一个元素外,每个元素有且仅有一个直接后驱
1.2 线性表的基本操作
InitList(&L): 初始化表。构建一个空的线性表L,分配内存空间
DestoryList(&L): 销毁操作。销毁线性表,并 释放线性表L所占用的 内存空间
ListInsert(&L,i,e): 插入操作。在表L中的第i个位置上插入指定元素e
ListDelete(&L,i,&e):删除操作。删除表L中国的第i个位置的元素,并用e返回删除元素的值
LocateElem(L,e):按值查找操作。在表L中查找具有给定关键字值的元素
GetElem(i):按位查找操作。获取表L中第i个位置的元素的值
其他常用操作:
Length(L):求表长。返回线性表L的长度,即L中数据元素的个数
PrintList(L):输出操作。按前后顺序输出线性表L的所有元素值
Empty(L):判空操作。若L为空表,则返回true,否则返回false
2.顺序表
2.1 顺序表是什么?
顺序表–用 顺序存储的方式实现线性表顺序存储。把 逻辑上相邻的元素存储在 物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。
2.2 顺序表的实现
静态分配(存储空间是静态的;容量不可变)
1 |
|
动态分配
1 |
|
2.3 顺序表的特点
随机访问,即可以在O(1)时间内找到第i个元素- 存储密度高,每个结点只存户数据元素
- 拓展容量不方便(即便采用动态分配的方式实现,拓展长度的时间复杂度也比较高)
- 插入、删除操作不方便,需要移动大量元素
2.3 顺序表的基本操作
2.3.1 插入
评论


