C语言实现链表创建

本文介绍了链表的基本概念,强调了其灵活性和随机访问的不足。通过C语言展示了如何创建链表,特别是使用尾插法,并提供了链表的遍历、清空等操作的代码示例。链表的创建涉及malloc和free函数以管理内存,避免内存泄漏。
摘要由CSDN通过智能技术生成

C语言实现链表的创建

链表:是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

从链表的概念中不难得出,链表是由一系列结点组成的。
结点又包含有数据域和指针域,数据域存储数据元素,指针域则用来指向别的结点或者存储下一个结点地址,起到链接作用。


一.从百度百科的这副图片来简单理解一下链表的结构在这里插入图片描述

1.创建头结点head
2.在创建一个结点用来保存每次插入的结点p1
3.循环创建一般结点p2、p3…
4.将创建的结点与已有的结点链接起来
5.遍历链表并输出数据
注意!
我们需要使用malloc函数给结点分配内存,malloc用完最好free,防止造成内存泄漏

  • 链表的优点:灵活性。插入和删除操作时,只需修改被删节点上一节点的链接地址,不需要移动元素,从而改进了在顺序存储结构中的插入和删除操作需要移动大量元素的缺点。
  • 链表的缺点: 随机访问。链表的访问取决于结点的位置,当需要随机访问结点时,在顺序存储结构中的效率低。

二.链表的相关操作

1.创建链表(前插法、尾插法、序插法、定位法)

  • 前插法:将新生成的结点依次插入头结点之后创建链表。
  • 尾插法:将新生成的结点依次插入到链表的最后面,作为新链表的最后一个结点。
  • 序插法:将新生成的结点依次插入后保证结点域数据的有序性。
  • 定位法:新生成的结点依次插入到链表中指定的位置中。

2.遍历链表:就是对于某一个数据结构中所有元素按照一定的顺序依次访问。对链表来说,就是从链表的头结点一直访问到链表的尾结点。

3.清空链表:把所有存有数据的结点清空释放出去(除了头结点以外)。

4.销毁链表: 把链表的东西全部清空,就不存在这个链表了,把包括头结点在内的所有节点释放掉。

5.链表逆序:把每一个节点指向的下一个节点的next的指针倒过来进而指向它的前面的那个节点。

三、代码示例

  • 我用尾插法来展示我对链表的理解,尾插法也是最容易理解的。
 /*尾插法建立链表*/
 #include <stdio.h>
 #include <stdlib.h>
  
 struct list     <
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

林同学_ioT

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

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

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

打赏作者

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

抵扣说明:

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

余额充值