2.2-2顺序表的插入和删除

顺序表的基本操作————插入

ListInsert(&L,i,e):插入操作。在表L中的第i个位置上插入指定元素e。

第i个位置称为:位序

 

 用存储位置的相邻来体现数据元素之间的逻辑关系。

位序是从1开始,但是数组是从0开始。

注意位序,数组下标的关系,并从后面的元素依次移动

定义ListInset基本原理

 main函数应用如下:

 

 插入算法是基操:让自己的数据结构可以让被人很方便的使用。

用户的输入可能会存在某些问题(输入的插入位序超过或小于了顺序表的长度,存储空间已满及大于等于MAXSIZE时,不能插入):

返回布尔值,代码如下:

 好的算法应当具有“健壮性”(能处理异常情况,并给使用者反馈)

下面来分析一下插入这种操作的时间复杂度:
关注的是最深层循环语句的执行次数与问题规模n的关系。

问题规模:n=L.length(表长)

 

记住可以有n+1种情况哦 !

当i=n+1,循环0次。

顺序表的基本操作————删除

specific node:
定义一个ListDelete函数:
跟之前ListInsert的原理差不多

 同样是由i的合法值的判断:

从前面的元素依次移动

 这里初始值设置e为-1,因为用引用符号把e带回来。如果不设置引用符号,那么输出的w元素值依旧为-1.

如果函数形参里面的L如果前面不加上引用符号,那么ListDelete函数不会生效,main函数里面的L依旧是L.

下面同样来分析删除操作的时间复杂度:
一样一样的:

 知识点的回顾:

由于物理存储位置和逻辑位置都是相邻的:所以位置之后的元素都要移动。 

C++线性表的删除实战代码:
结构体别名定义:d

 结构体初始化这段node可以省略

 ListDelete函数原理(注意函数的健壮性)

 main函数

 这里显示出 bool类型函数的作用,返回的是真或者假,可以直接用于if——else——判断

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值