’c‘ 顺序表的基本操作

定义:把逻辑上相邻的结点储存在物理位置上的相邻储存单元中,结点的逻辑关系由储存单元的邻接关系来体现

通俗来讲,顺序表就是把线性表中的所有元素按照其逻辑顺序,依次储存到从指定的储存位置开始的⼀块连续的储存空间中。

顺序表分为静态顺序表和动态顺序表,今天要讲的是动态顺序表的基本操作

首先需要定义一个结构体,其中size表示顺序表中已经存储的个数capacity表示顺序表空间的大小

然后创建一顺序表

一.顺序表的初始化接口和顺序表的销毁接口

然后创建一些接口,首先需要创建对顺序表初始化的接口

因为动态顺序表都是让malloc从堆上申请来的空间,等使用完以后需要把这部分内存归还给系统,所以要创建一个对顺序表销毁的接口

二.顺序表的打印接口和顺序表检查内存空间的接口

在创建完以上接口以后,我们想要知道顺序表中存储了哪些元素就需要用到打印接口

我们想要存储数据时需要向堆区申请空间空间不足时又需要申请空间,因此现在开始创建检查检查内存的接口

其一当size==capacity==0时让newcapacity==4这样方便我们申请空间

其中当size==capacity时表示内存空间不足,需要扩容,一般我们会选择两倍两倍的扩容,因此newcapacity==ps->capacity*2

三.顺序表的尾插和顺序表的尾删

申请好空间以后呢,现在就可以开始向顺序表中插入元素了,现在开始创建一个尾插接口

插入之前一般都需要检查空间够不够,其次就是插入元素了,每插入一个元素size就+1一次

好了,现在就让我们来检查检查我们写的接口准不准确吧

ok的,如上图,我们创建的接口看来是没有问题的

既然已经有了尾插,那么顺其自然的我们就可以建立尾删

尾删实际上就如在数组中不要最后一个下标对应的元素,此时我们只需要把下标的总大小-1就ok了,就是不访问这个数据了

四.顺序表的头插和顺序表的头删

尾插,尾删已经解决,那么我们就可以开始写头插和头删了

头插实际上就像我们在食堂排着队,突然前面有一个人(1号)插了进来,导致(1号)后面的人都往后退了一步,我们实现头插就像插队一样,把要插入的元素的位置让其后面的元素向后移一位即可

接下来是头删,头删和头插顾名思义,头插是让其后面的元素往后移,那么头删就是让其后面的元素往前移把他给覆盖掉,就像排队的人,前面本来排着队的一个人突然有事走了,那么后面的人向前走了一步这样

头插头删,尾插尾删已经创建好了,那么我们现在就可以创建几个特殊的接口了

五.顺序表任意位置插入接口和顺序表任意位置删除接口

任意位置插入一个元素,实际上和头插有异曲同工之妙,就是把该位置及后面的元素往后移一步

任意位置删除一个元素和头删也有异曲同工之妙,就是把该位置后面的元素往前移一步,把该位置的元素覆盖掉

六.顺序表查找接口

最后就是在顺序表中查找一个元素了,方法就是我们遍历这个顺序表如果找到了就返回该元素在顺序表中的下标,否则返回零

好了,今天的分享就是那么多,感谢支持!!!

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冧轩在努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值