本文是个人笔记,仅用于学习分享,素材来自青岛大学王卓老师的教学视频,如有侵权,请留言作删文处理。
王卓老师 数据结构与算法第 02 周第 12 个原视频链接可以在B站搜索
📚 Week02_12_顺序表小结
📚 顺序表(线性表的顺序存储结构)的特点
(1) 利用数据元素的存储位置表示线性表中相邻数据元素之间的前后关系,即线性表的逻辑结构与存储结构一致。
(2) 在访问线性表时,可以快速地计算出任何一个数据元素的存储地址。因此,可以粗略地认为,访问每个元素所花时间相等。
这种存储元素的方法被称为随机存取法。
📚 线性表的基本操作
// 初始化操作,建立一个空的线性表L
InitList(&L);
// 销毁已经存在的线性表L
DestroyList(&L);
// 将线性表清空
ClearList(&L);
// 若线性表为空,返回true;不为空,返回false
IsEmpty(L);
// 返回线性表L的元素个数
ListLength(L);
// 将线性表L中第i个位置元素返回给e
GetElem(L, i, &e);
// 将线性表L中第i个位置插入新元素e
ListInsert(&L, i, e);
// 删除线性表L中第i个位置元素,用e返回
ListDelete(&L, i, &e);
// L中查找与给定e相等的元素
// 若成功,返回该元素在表中的序号,否则返回0
LocateElem(L, e);
📚 顺序表的操作算法分析
(1) 时间复杂度
查找、插入、删除算法的平均时间复杂度为 O(n)
(2) 空间复杂度
显然,顺序表操作算法的空间复杂度 S(n) = O(1),没有占用辅助空间。
📚 顺序表优缺点
优点
(1) 存储密度大(结点本身所占存储量 / 结点结构所占存储量)
(2) 可以随机存取表中任一元素
缺点
(1) 在插入、删除某一元素时,需要移动大量元素
(2) 浪费存储空间
(3) 属于静态存储形式,数据元素的个数不能自由扩充
克服顺序表缺点的方法是:使用链表存储线性表。
学习笔记最后有微信公众号:惟CPP,欢迎关注,一起交流学习进步~