对链表的基本操作有:创建查找,插入删除,修改也就是我们常常说的增删改查
建立带有头结点的单向链表
建立链表就是根据需要一个一个的开辟新结点,在结点Φ存放数据并建立结点之间的链接关系,建立单向链表有两个关键的问题:
第一、结点的存储空间必须是由程序来动态分配的
第二、结點之间必须形成链状
建立单向链表的主要操作步骤如下:
- 将数据存入节点的成员变量中
- 重复上述操作直至输入结束
我们用一段代码来说明:建立一个学生电话簿的单向链表
从图可以知道我们需要一个头指针,一个头结点还有一个不断创建结点的指针
//head为头节点,p为头指针input用于不断创建节点首先先看结构体的定义:
- 结构体拥有三个成员,其中name和tel为数据域next为指针域
- 程序拥有三个结构体指针,headinput,p
接下来咱們创建一个链表:
- 在主函数内我们用head指针充当头结点
- 我们可以看到语句head->next指向空,将头结点的指针域指向为空
这时主函数其他数据是输入選择与链表无关
那么创建链表,我们已经完成了一个头节点的创建这个时候,我们来看Input函数内
从上述代码可知程序又为input开辟了一片內存
这时要求输入了,在input的数据域内载入数据
那么input所指向内存中并有了数据
这时我们如何将两者连接起来呢思路:
- 利用头指针指向头结點(在头结点内我们不使用数据域)
- 判断头结点的指针域是否为空
- 不为空则将指针移到头指针的指针域(下一个节点)继续判断
- 将为空的指针域指向input所创建的结点
- 将所创建节点的指针域指向空
从上图可以看到,我们将p作为头指针:
判断头结点的指针域是否为空
- 将为空的指针域指向input所创建的结点
- 将所创建节点的指针域指向空
这时一个单向链表结构就创建好了
- P作为头指针负责指向结点加以操作
- head作为头结点,充當火车头的角色方便管理后面的节点(务必使用)
- Input的作用于不断创建节点
结语:在学习单链的时候,社区各位大佬的文章对我帮助极大 這是我自己对单链的理解希望各位大佬指出不足!