朋友们大家好!今天,我想讲的是,顺序表和单链表。
咱就先说顺序表吧,顺序表他有两种,一种是静态单链表,那另一种呢?✓喽,不就是动态单链表嘛,那他俩有啥区别呢?
静态单链表呀,它是固定大小滴,当你把它创建好,ok,老铁,他就没办法动喽,而动态链表呢,它申请一块儿空间(malloc),等你觉得不够用了,咱就可以再申请呗(realloc),这就是两个最大的区别啦。
底下是两种代码的实现:


看吧,那他俩最大的差距来自哪儿呢?不就是静态链表中,他直接给定这个数组了昂,告诉你他不可变喽,而动态链表呢,对滴,他存了一个数组指针,指向一块儿空间,供你使用。
在咱们以后的工作生活中,很少用到静态顺序表,大多用的都是动态顺序表,所以接下来,我就谈谈动态顺序表的初始化,销毁,增删查改。

下面是动态顺序表的插入(尾插)
插入成功返回true 失败则返回false

动态顺序表的删除

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

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

动态顺序表的第pos个插入也是同理,和删除十分类似,只不过这时候注意昂,得从后面儿开始覆盖啦,先判断顺序表有没有满嘞,再从最后面儿开始覆盖,直到空出pos位置再插入数据
你看动态顺序表的中间插入删除是不是效率就特别低,要移动太多太多数据,还容易出错,所以,动态顺序表适合尾插尾删,在以后只需要对数据进行尾插尾删的时候,可以考虑动态顺序表(栈),这时候他的效率尤其之高。
那如果要大量使用中间插入删除呢?这时候,单链表,双链表,就应运而生啦

被折叠的 条评论
为什么被折叠?



