C语言顺序结构——单链表

上一篇中介绍了顺序表,今天介绍单链表,链表分为单链表(单向不带头不循环链表)和双链表(双向带头循环链表)均为线性表。接下来具体介绍单链表:

一.单链表的基本结构(单链表是有节点组成的)

单链表的基本结构本质上是一个结构体如:

struct SListNode

{

   int data;

   struct SListNode*next;

};

二.单链表实现的代码展示

与顺序表一样,单链表工程也分三个文件:SList.h、SList.c、test.c

1.SList.h文件

其中包含了对单链表节点的定义,以及各个功能函数的声明。

2.SList.c文件

①.打印单链表

因可以通过单链表第一个节点来找到整个链表,所以通过一个循环将节点中的数据依次打印出来即可。

②.创建节点

因为只要插入数据就需要创建一个新的节点,所以就把创建节点单独分装成一个函数,当然也很简单,用malloc动态开辟一块空间,其中下一个节点的地址不清楚,就先付为空。

③.尾插

当链表为空时:将新创建的节点地址付给单链表第一个节点*pphead即可,如下图

当链表不为空时:先找到原链表最后一个节点,再让原链表的next指针指向新创建的节点即可。

④.头插:先让新节点的next指向*pphead,再让*pphead付为新节点的地址(因为链表为空的情况包含在链表不为空的情况中,所以并没有分类写)。

⑤.尾删:链表不能为空

只有一个节点时:直接将该节点free掉,并将其付为空即可。

有多个节点时:先找到倒数第二个节点,然后free掉最后一个节点,再让倒数第二节点的next指向NULL。

⑥.头删:先存下第二个节点的地址,然后free掉第一个节点,再让*pphead付为第二个节点的地址。

⑦.查找:从第一个节点开始遍历链表查找即可,找到返回节点地址,否则返回NULL。

⑧.在指定位置之前插入数据

当指定位置为第一个节点时:就是头插

其他情况:找到POS前一个节点,让其的next指向新节点,再让新节点的next指向POS。

⑨.在指定位置之后插入数据

指定位置为最后一个节点时和在其他位置时代码写法是一样的。

⑩.删除指定位置的数据

当指定位置为第一个节点时:就是头删

是其他位置时:先找到POS前一个节点,然后让他的next指向POS的下一个节点,再free掉POS。

⑪.删除指定位置之后的数据:先找到POS,再让POS的next指向下一个节点的下一个节点,最后free掉POS的下一个节点。

⑫.销毁链表:因链表的节点都是用malloc动态开辟的,在不用时要及时销毁,避免内存泄漏。

3.test.c文件

这里面是我对前面那些功能函数的测试,可以根据自己的习惯写自己的测试。

三.结束

单链表的一些基本功能就讲完了,可以根据自己的喜好添加些别的功能,文章有什么不足欢迎大家指出。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值