单链表创建以及应用

概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表
中的指针链接次序实现的 。

链表的结构跟⽕⻋⻋厢相似,淡季时⻋次的⻋厢会相应减少,旺季时⻋次的⻋厢会额外增加⼏节。只需要将⽕⻋⾥的某节⻋厢去掉/加上,不会影响其他⻋厢,每节⻋厢都是独⽴存在的。⻋厢是独⽴存在的,且每节⻋厢都有⻋⻔。想象⼀下这样的场景,假设每节⻋厢的⻋⻔都是锁上的状
态,需要不同的钥匙才能解锁,每次只能携带⼀把钥匙的情况下如何从⻋头⾛到⻋尾?
最简单的做法:每节⻋厢⾥都放⼀把下⼀节⻋厢的钥匙。
在链表⾥,每节“⻋厢”是什么样的呢?
链表⾥的每节"⻋厢"都是独⽴申请下来的空间,我们称之为“结点/节点”。
节点的组成主要有两个部分:当前节点要保存的数据和保存下⼀个节点的地址(指针变量)。

创建这样一个结构体

1.创建结点以及打印函数

2.头插法创建链表

相比与尾插法,头插法更优。因为尾插法在一个结点也没有时需要用二级指针来改变头指针的值,其他情况只需要一级指针即可,需要分两种情况。而头插法一直需要用二级指针来改变头指针的值,只有这一种情况。

3.尾插法创建链表

4.头删函数

头删和尾删都需要考虑三种情况:1.没有结点,这时不需要删   2.只有一个结点,删除后需要改变头指针的值,将其置为NULL  3.有多个结点

5.尾删函数

6.找结点位置函数

7.特定位置前插函数

8.特定位置后插函数

特定位置后插更简洁

9.特定位置删除函数

10.销毁链表函数

总结:由上述可知,改变链表结构的函数都需要穿二级指针,因为可能改变头指针的值。

应用

1.找到链表中间结点

2.反转链表

3.分割链表

4.约瑟夫问题

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别致的影分身

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值