系列# 系列文章目录
@[TOC]系列文章目录
前言
一、链表的概述
二、链表的操作
1.动态链表的创建
2.输出链表
3.插入链表
4.删除链表
5.完整的链表
前言
第一次写链表文章中有不妥的地方希望来留言。
一、链表的概述
链表是一种常见的数据结构。我们都使用过数组存放数据,但是使用数组时要先指定数组中包含的元素个数,即为数组的长度。但是如果向这个数组中加入的元素超过了数组的大小时,便不能将内容全部保存。
这时希望有一种存储方式,其存储元素不受限定的,当进行添加时,存储的个数就会随之改变。
如图为链表结构示意图。
最后一个元素指针指向NULL。
下面就看看链表怎么创出来的吧。
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、链表的操作
1.动态链表的创建
我们以班级为例,链表中的节点表示学生
首先创建节点结构,表示每一位学生
Num为学号。
pNext用来指向下一个节点的指针。
然后开始创建列表,最后返回链表的头文件。
1.Pend指针最后指向最后的节点。
2.而Pnew指针指向最后指向的空间不需要,最后要释放,防止内存泄漏。
3.最后节点中的pNext指针要指向空,防止非法访问。
下面看看效果
红方框下面的是下面要介绍的代码效果。
2.输出链表
链表已经创建出来,现在如何将链表中的数据显示输出
代码如下:
上面绿色字体中一个最后节点输出不出来的问题,是因为一个节点中的pNext指针是指向下一个节点的
如图:
如果向绿色中的代码写的话,第一次判断的时候就是第二个节点的地址,
那么最后会使最后节点的数据无法显示输出。
3.插入链表
我们应该如何插入数据呢?
我们可以在链表头节点是进行。
代码如图:
绿色字体中又有一个问题,是因为进行插入数据中,pNew指针是指向头节点的,故不能释放。
我在这说这个问题是因为,很多人用习惯了free函数,一看到是动态开辟的就用free函数释放。故我们要谨慎处理。
删除链表
这次又然后删除呢?
其实想删除某个节点,我们就把那个节点给释放掉,然后把那个节点前后链接起来就行。
代码如下:
这次绿色的代码没有错误,反而比我写在for中的更加简洁。
完整的链表
代码如下:
代码效果:
总结
这就是我写的链表了,可能还有不妥当的地方,请谅解,欢迎留言。