静态顺序表和动态顺序表

朋友们大家好!今天,我想讲的是,顺序表和单链表。

咱就先说顺序表吧,顺序表他有两种,一种是静态单链表,那另一种呢?✓喽,不就是动态单链表嘛,那他俩有啥区别呢?

静态单链表呀,它是固定大小滴,当你把它创建好,ok,老铁,他就没办法动喽,而动态链表呢,它申请一块儿空间(malloc),等你觉得不够用了,咱就可以再申请呗(realloc),这就是两个最大的区别啦。

底下是两种代码的实现:

看吧,那他俩最大的差距来自哪儿呢?不就是静态链表中,他直接给定这个数组了昂,告诉你他不可变喽,而动态链表呢,对滴,他存了一个数组指针,指向一块儿空间,供你使用。

在咱们以后的工作生活中,很少用到静态顺序表,大多用的都是动态顺序表,所以接下来,我就谈谈动态顺序表的初始化,销毁,增删查改。

下面是动态顺序表的插入(尾插)

插入成功返回true 失败则返回false

动态顺序表的删除

 动态顺序表的查找

 以上是比较基础的动态顺序表表操作,尤其是插入删除,都是在尾部进行的,如果没在尾部呢?在数组中间进行插入,删除,那就得移动很多很多数据,显得十分麻烦。

此刻如果想在pos位置进行删除:

 就得把4的数据往3移动,5的往4移动……

动态顺序表的第pos个插入也是同理,和删除十分类似,只不过这时候注意昂,得从后面儿开始覆盖啦,先判断顺序表有没有满嘞,再从最后面儿开始覆盖,直到空出pos位置再插入数据

你看动态顺序表的中间插入删除是不是效率就特别低,要移动太多太多数据,还容易出错,所以,动态顺序表适合尾插尾删,在以后只需要对数据进行尾插尾删的时候,可以考虑动态顺序表(栈),这时候他的效率尤其之高。

那如果要大量使用中间插入删除呢?这时候,单链表,双链表,就应运而生啦

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值