1.链表区别于数组的优势:
1.数组无法存储多种类型的数据,而链表可以存储一个结构体。
2.数组在插入或删除其中一个元素时,这个元素之后的元素全部都需要向前或向后移动,工程量很大,而链表通过结点链接,在删除或插入时只需要改变结点连接的下一个位置,就可以改变这个链表的元素,很便捷。
3.数组一旦在初始化时给定数组的长度,例如a[10]后,就会限制数组的长度而后续无法再增加数组的容量,而链表则不会出现这个问题。
2.链表的基本元素:数据域和指针域:
struct Node{
int date;//数据域
struct Note*next;//指针域
};
下面就是一个基本静态链表的形态:
3.动态创建链表
首先了解一个语句,(int*)malloc(sizeof(int));语句给指针变量分配一个整型存储空间。
C语言中定义指针变量后,必须给指针变量进行相应的地址分配,之后才可以使用指针变量,否则就会出现程序异常。
p = (int*)malloc(sizeof(int)); //让系统为p选择一个内存空间。
下面是一个表头函数的创建:
data数据如果是一个结构体变量,则无法给定初值,因此data一般不需要初始化。
下面是一个节点函数的创建:
创建完表头函数和节点函数之后,一个链表就可以有了
接下来就是链表功能的实现,可以是在头部插入元素,在尾部插入元素或者在中间插入元素
删除某个元素或者逆序输出
首先写出打印链表的函数书写:
下面是在头部插入一个元素:
如样图所示,newNode和headNode有如上关系,用代码记录为:
另一种功能,在某一处删除元素
注:链表在实现学生选课系统,管理系统时,将结构体记为data,即链表的元素,有很好的效果
如下所写
详情可参阅b站教学:
1个小时学会单链表,C语言数据结构专题_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
https://www.bilibili.com/video/BV1Rb411F738?from=search&seid=13715399246791622555