链表c语言

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

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值