数据结构与算法 线性表

线性表

线性表:零个或多个数据元素的有限序列
线性表元素的个数n(n>=0)定义为线性表的长度,当n等于0时,成为空表
线性表的抽象数据类型定义如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
顺序存储方式
在这里插入图片描述
顺序存储结构需要三个属性:
1)存储空间的起始位置:数组data他的存储位置就是存储空间的存储位置
2)线性表的最大存储容量:数组长度MaxSize
3)线性表的当前长度:length

数据长度与线性表长度的区别
这里有两个概念:“数组和长度”和“线性表的长度”需要区分一下
数组的长度是存放线性表的存储空间的长度,存储分配后这个量一般是不会变的
线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作的进行,这个量是变化的。
我们对每个线性表位置的存入或取出数据,对于计算机来说都是相等的时间,也就是一个常数,因此用我们算法中学到的时间复杂度的概念来说,他的存取时间性能为0[1],我们通常把具有这一特点的存储结构称为随机存取结构

顺序存储结构的插入与删除
举个列子,本来我们在春运时去买火车票,大家排的队好好的,这是来了个美女,对着队伍中排在第三位的你说,“大哥,我有急事能不能让我排在你前面”你心一软你就同意了,你必须回退一步,你后面的人都往后退一步,这个例子其实已经说明了线性表的顺序结构,在插入数据时的实现过程如图:
在这里插入图片描述
插入算法的思路:
1)如果插入的位置不合理,抛出异常
2)如果线性表的长度大于或等于数组长度,则抛出异常或动态增加容量
3)从最后一个元素开始向前遍历到i个位置,分别将他们都向后移动一个位置
4)将要插入元素填入位置i处
5)表长加1

实现的代码如下:

在这里插入图片描述
删除操作:
还是刚才的列子,就在此时有一个胖子对着刚刚插队的美女说,你这骗子,还我钱,这女子二话不说就冲出了队伍,胖子紧追其后,消失在人群中,于是排队的人群,又像蠕虫一样,军向前移动了一步
这就是线性表的顺序存储结构删除元素的过程

在这里插入图片描述
删除算法的思路:

1)如果删除的位置不合理,抛出异常
2)取出删除元素
3)从删除元素位置遍历到最后一个元素位置,分别将他们都向前移动一个位置
4)表长减1
在这里插入图片描述
在这里插入图片描述
插入和删除的时间复杂度
在这里插入图片描述
线性表的顺序存储结构的优缺点
在这里插入图片描述

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值