当前位置: 首页 > news >正文

单链表(c语言简单实现)

 单链表是一种常见的数据结构

 一、结构特点

 1. 由一系列节点组成,每个节点包含数据域和指向下一个节点的指针域。

2. 最后一个节点的指针域为 null,表示链表的结尾。

 二、主要操作

 1. 插入节点:可以在链表的头部、尾部或特定位置插入新节点。

- 头部插入:操作简单,只需将新节点的指针指向原链表的头节点,然后更新链表头指针。

- 尾部插入:需要遍历链表找到最后一个节点,然后将其指针指向新节点。

- 特定位置插入:先找到目标位置的前一个节点,然后进行插入操作个节点,然后进行插入操作。
2. 删除节点:可以删除链表中的特定节点。
- 首先找到要删除节点的前一个节点,然后将其指针指向要删除节点的下一个节点。
3. 查找节点:通过遍历链表,根据特定条件查找目标节点。
 
三、优点
 
1. 动态内存分配:可以根据需要动态地增加或减少链表的长度,不需要预先确定链表的大小。
2. 插入和删除操作高效:在特定位置进行插入和删除操作时,只需修改指针,时间复杂度为 O(1)(在头部或尾部插入/删除)或 O(n)(在特定位置插入/删除,n 为链表长度)。
 
四、缺点
 
1. 访问特定位置的节点效率低:需要从头节点开始遍历链表,时间复杂度为 O(n)。
2. 不支持随机访问:无法像数组那样通过下标直接访问特定位置的元素。

示例:

创建一个结构体

b44aa10fe25c4ee3978be2050ce27173.png

 构建单链表的框架和函数的基本功能

SList.h文件

cc0381031a194a8ca19ac30f5d4fe133.png

 SList.c文件

打印链表f384018692b74bd7b5fd97eb965e0894.png

 头部插入数据

5f9156c775a54719979f3f64c56296f7.png

 创建节点

3883c0815bc84e15825c0313f269fb33.png

 尾部插入数据f18625940423478586c15b306f642c71.png

 尾部删除数据

11e11e7e24c548f2818dfa708f5960be.png

 头部删除数据

48bd4c2e09f746c4bdebb2d7cbc85d3f.png

 查找数据

b63a1c50fdd443a1bd9dd007a4bd84e8.png

 查到pos位置数据,然后在pos前面插入数据278198f83c0e41d5a4ac6702608d7675.png

 查到pos位置数据,然后在pos后面插入数据

1e3f33dc82364688a5065e92b7320ad9.png

 查到pos位置的数据,然后删除pos这个点的数据

42de811729cc494081fdadecfc15571e.png

 查到pos位置的数据,然后删除pos后面那个的数据

294db97969024208b9917930f79172e6.png

 test.c文件

对这个链表的基本处理

72d1fbf5c42941769c62dcb392722558.png

b8977b2996e9487ba5ae0781e92a425b.png 

 

 

 

 

 

http://www.lryc.cn/news/442103.html

相关文章:

  • 三菱变频器Modbus-RTU 通讯规格
  • PyQt5库学习之QFileDialog.getOpenFileName函数
  • 如何理解变量提升和函数提升
  • monorepo基础搭建教程(从0到1 pnpm+monorepo+vue)
  • 使用Docker Compose一键部署
  • 【GVINS】
  • Linux 给 vmlinux 添加符号
  • 【mac】MacOS无法打开XXX文件,因为无法验证开发者的问题解决
  • Docker 无法拉取雷池 WAF 的解决方法
  • 进制转换,原码,反码,补码,二进制位运算及应用
  • node.js居家养老服务系统—计算机毕业设计源码35247
  • OpenHarmony(鸿蒙南向开发)——小型系统芯片移植指南(二)
  • Live800:从心出发,以情动人:构建深度客户服务文化
  • 分布式事务一致性:本地消息表设计与实践
  • 深入浅出Docker
  • Flink 与 Kubernetes (K8s)、YARN 和 Mesos集成对比
  • Python 集合的魔法:解锁高效数据处理的秘密
  • Go必知必会:构建复杂数据模型的基石
  • 大数据Flink(一百一十七):Flink SQL的窗口操作
  • 【西电电装实习】6. 手装无人机的蓝牙断连debug
  • AIGC实战之如何构建出更好的大模型RAG系统
  • 【数据结构-差分】力扣1589. 所有排列中的最大和
  • Spark部署文档
  • Broadcast:Android中实现组件及进程间通信
  • 5分钟熟练上手ES的具体使用
  • lambda 自调用递归
  • mac中git操作账号的删除
  • AI Agent的20个趋势洞察
  • Spring Boot-定时任务问题
  • 从混乱到清晰!借助Kimi掌握螺旋型论文结构的秘诀!