本文介绍: 建立一个单链表需要多个结点共同构成,我们针对单链表一个结点进行定义,将其定义为一个结构体,包含数据和下一个结点的指针。}SLNode;无头单向不循环链表,这种链表虽然结构简单但是应用广泛。在最近的学习过程中,我发现不少与链表有关的题目多用单链表来设题,除此之外,一些更加复杂的结构也需要用单链表作为支撑,所以可以看出其重要性。除此之外,恰恰是因为其结构简单,所以对特殊情况的限制较少,这就需要我在写代码时充分考虑可能会发生的所有情况,以便做出合理控制。
1.链表介绍
链表是一种物理储存上非连续、非顺序的存储结构。数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。
对于上图,每一个结点都是一个结构体,这个结构体内存储的成员是值和下一个结点的地址。所以plist存储的是第一个结点的地址(即plist为一个结构体指针),而后续每个节点都会存储对于自己下一个结点的地址。由于链表的结点是通过malloc一个个申请出来的,所以其存储空间是不连续的,也是由于这个原因我们才需要通过一个结构体指针来访问逻辑上的下一个结点。
2.链表的分类
链表具有三个特征,根据这三个特征的排列组合得知链表有8种组合。
2.1 单向和双向
单向链表的每个结点成员只有指向下一个结点的指针,而没有指向上一个结点的指针。双向链表则二者皆有,所以单向链表就像“过河的卒”,不可以回头访问自己的上一个结点,而双向链表则既可以访问自己的上一个结点,也可以访问自己的下一个结点。
2.2 带头和不带头
2.3 循环和非循环
3.单链表工程
3.1 单链表的定义
3.2 单链表的函数接口
3.2.1 单链表结点插入
3.2.1.1 单链表创建结点
3.2.1.2 单链表头插
3.2.1.3 单链表尾插
3.2.1.4 单链表在指定结点前插入
3.2.1.5 单链表在指定结点后插入
3.2.2 单链表结点删除
3.2.2.1 单链表头删
3.2.2.2 单链表尾删
3.2.2.3 单链表删除指定结点
3.2.2.4 单链表在指定结点后删除
3.2.3 单链表打印
3.2.4 单链表查找
3.2.5 单链表销毁
4.单链表总结反思
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。