双向带头循环链表的 (增删查改) 的实现
@TOC
一、双向带头循环链表
构成
二、双向带头循环链表的实现
1.函数的定义和结构体的创建——list.h
复制代码
2.函数的调用——list.c
复制代码
3. 双向带头循环链表与单链表的传递参数区别
1.单链表:单链表因为没有头节点的存在,导致在尾插时会改变链表的头节点所以需要传递二级指针的地址即二级指针。2.双向带头循环链表:初始化头指针时,是需要传递二级指针,只不过用函数传回结构体指针的方式代替了,而在后续接口则不需要传递二级指针,因为后来都是在头指针的基础上进行的,而头节点本身不会存储有效数据,并不会改变头节点本身。
4.双向带头循环链表的接口
1.初始化
复制代码

2.尾插
复制代码

3.尾删
复制代码

4.头插
复制代码

5.头删
复制代码

6.查找位置
复制代码
7.指定 在 pos 之前插入
复制代码

8.指定删
复制代码

9.内存销毁
复制代码
10.打印
复制代码
三、链表与顺序表的不同点
1.顺序表:在物理上是连续的优点: 支持随机访问。缺点:(1)任意位置插入或者删除时,可能需要挪动元素,效率低。(2)在动态开辟空间时,会造成一定的浪费。
2.链表:逻辑上是来连续的,物理上的不连续。优点:(1)任意位置插入或者删除,不会挪动元素,只会改变指针指向,(2)没有容量的概念,不会造成空间浪费。缺点:不支持随机访问
版权声明: 本文为 InfoQ 作者【lovevivi】的原创文章。
原文链接:【http://xie.infoq.cn/article/a9b00f3dd608301dc668ab6a9】。文章转载请联系作者。
评论