【数据结构】- 单链表

先创建好SList.c、Test.c两个源文件和SList.h一个头文件。

SList.c和Test.c一样

4ccd5f6981ca485c843443729ddb27ba.png

SList.h 文件

e3202111356b48089776ed992a5427b3.png

 

 

在SList.h加上

63f41876892744a4b086d1bd063fa7d9.png

 

1.单链表打印

SList.h

612180c6eb974a81be5bc111c3daa6bc.png

 

SList.c

0df05f35ae59486eae48557f26272327.png

思路:

逻辑图(之后经常用到):

81b5e92123134b9b93e0aa0d28797b8e.png

物理图:

ef9ab6102b6740158af8582cadb5a945.png

 

为了方便运行Test.c中的运行还要在SList.h写一个造节点的函数。

2.造节点的函数

SList.h

4441b665b93244f6b455ed55e0ebca83.png

 

SList.c

7beef9e1aa5548a28fccd01868d44573.png

 

Test.c

ef1eb52ee82e434b94e575079a0e8fa8.png

 

因为要把一个个节点给链接起来(先写头插)

思路:

物理图才是真正的内核

047be3648f4f448bb3db3164aeb0a8b3.png

b010ae043a3143bdb00a1d38c75cc123.png

 

 因为要头插Test.c要改成

f8fb99148ae3490fb3bf12e96fae826c.png

425f374737e34940b0f78ade3e8c458a.png

 

 运行结果:

aaf0080e6f154cde8554c194b4ae7ecf.png

如果改为尾插会是正序的。

 

如果想在链表中进行尾插

3.单链表的尾插

SList.h

e5b31d635cb44d49819af1ed0f3d0b5f.png

 

思路:

这里有个经典错误值得提一下

7a102f118d944d76ad47759f7246bca7.png

逻辑图不好理解,看看物理图

e1025b8a912e459e836a586c77fb2dfb.png

966074998be74544897d75055b1333c3.png

3c5bb22925ae43e2b152a8d17018b423.png

24b9aec9ca4b40a38f0efe769483fa4b.png

SList.c

bd1a8915d7e04b3bbc931b1bee7d2a52.png

 

 

这两个代码天差地别 

 eb9cb09303064d7ebe967a5b137bea70.png

Test.c

e1efeebb0bf24da0ae47b20b8eeb9368.png

 425f374737e34940b0f78ade3e8c458a.png

运行结果:

eba1bb578133471493fbaf7ab5513ee3.png

 7f67ba5c39d24470a6bafaa4473cfce1.png

 我们已经折腾出来了一个链表往链表里边加数据

 

有没有一种可能性一开始没有节点链表该怎么走?

假设SList.c

e67f6a62ac164307a37c740caba4abfa.png

 Test.c

e3d6b7dbf294474a810d338abfb8f441.png

6601649d1b074986b54a987190c0a71b.png

运行结果:

e78f82fe866e4ceb893a2dfbc36f16a4.png

为什么呢? 

 这是一个大坑大伙都要跳一遍的

f400d99cf298468786193f1ce8858ca9.png

 

原因也很好理解 

形参改变不会影响实参

9e2b7a005a3f4ba4a92dadef63aa3a2d.png

0c2a967985c2481787bc8af4947adda3.png

 26775e37610341daad7f02ac69831dc5.png

进入前 

bd8ee25d0c5f4ef59d725cb918a4df5c.png

交换后

d50b5a8ff63f46ccb06178a5bffb2807.png

 所以我们要进行修改

Slist.h进行修改

67b8e849514a423b901bff68ff0209b0.png

 

SList.c进行修改

1f172570a82348b5894e7a3f088d951f.png

 

Test.c进行修改

 5320ecbd43d64275a6275ded951b72f5.png

 6601649d1b074986b54a987190c0a71b.png

 运行结果:

7d865588f15a44268523fa73c4b51468.png

 本质理解

2361f44f9ae247be838e5d1f0260e36b.png

 

 4.单链表的头插

 思路:

8b6f2e4f6c9e449d9eb1e9ee1a6a8346.png

SList.h

7138285769cd4c7dbdb251d3dc0d27a0.png

SList.c

b305d36306e44ae09fa606268781863b.png

 

Test.c 

 c67223860259438498196e827f2846a2.png

 运行结果:

855c85cfd393435a923e2c6c3dad54a5.png

 

5. 单链表的尾删

SList.h

216edc07d7f14957bd13ae5936cbdc8c.png

思路: 

bbadf3cd12c642adb1ff045d3ba8b622.png

*pphead就是plist 

SList.c

9c8b87fc0414445da483862e0216fab1.png

b3e059f957e94a9086543076e967de0d.png

 

这里有个经典错误

e9f622f5faed4cfdacb47ce0f889406b.png

正确思路是

cb6e7ec6665a4f00b49c57a16273b93e.png

Test.c

bd3ef685894c44848fc0939dd02605e1.png

 

运行结果

f295b2a096704c0ca66691a33afb4226.png

 

6. 单链表头删

SList.h

36594dbd1147434fa32955401d2de653.png

 

思路:

7999979eaa7e497daacb1de5cc345669.png

 

SList.c

a4f8663eb68d4c16838e543f151a7407.png

 

Test.c

aac6ff39207b4d55a20af6508e421295.png

 

运行结果:

e22418a7ca9a45b0944039f666302b4a.png

 

7. 单链表查找

SList.h

SList.c

Test.c

运行结果

8. 在pos之前插入x

SList.h

SList.c

Test.c

运行结果

9. 单链表在pos位置之后插入x

SList.h

SList.c

Test.c

运行结果

10. 删除pos位置

SList.h

SList.c

Test.c

运行结果

11. 单链表删除pos位置之后的值

SList.h

SList.c

Test.c

运行结果

12. 单链表的销毁

SList.h

SList.c

Test.c

运行结果

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/633914.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

链表中倒数最后k个结点

链表中倒数最后k个结点 链表中倒数最后k个结点_牛客题霸_牛客网输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。。题目来自【牛客题霸】https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9 描述 输…

RNN:Recurrent Neural Network(上)

目录 1 为什么提出 RNN 1.1 什么是 Slot Filling 1.2 为什么 FFN 做不好 Slot Filling 1.3 为什么 RNN 能做好 Slot Filling 2 RNN 的整体结构 3 更高级的 RNN 结构 3.1 Deep RNN 3.2 Elman Network & Jordan Network 3.3 Bidirectional RNN 原视频&…

怎么样的布局是符合可制造性的PCB布局?

满足可制造性、可装配性、可维修性要求,方便调试的时候于检测和返修,能够方便的拆卸器件: 1)极性器件的方向不要超过2种,最好都进行统一方向等要求,如图1-1所示; 图1-1 极性器件方向统一摆放 2…

k8s的坑,从这里开始

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 以前刚接触k8s时踩了不少坑,比如这些: 问题1 1、在master节点使用kubectl命令时,报错&…

阿里云云原生弹性方案:用弹性解决集群资源利用率难题

作者:赫曦 随着上云的认知更加普遍,我们发现除了以往占大部分的互联网类型的客户,一些传统的企业,一些制造类的和工业型企业客户也都开始使用云原生的方式去做 IT 架构的转型,提高集群资源使用率也成为企业上云的一致…

20. 从零用Rust编写正反向代理,四层反向代理stream(tcp与udp)实现

wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子 项目地址 gite: https:…

【算法】串联所有单词的子串【滑动窗口】

题目 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。例如,如果 words ["ab","cd","ef"], 那么 "abcd…

2024 前端高频面试题之 JS 篇

JS 篇(持续更新中) 1、什么是原型、原型链?2、什么是继承?说一说有哪些?继承组合的原理及优点?3、new 操作符具体干了什么?4、js 有哪些方法改变 this 指向?5、bind 有哪些实现的注意…

通过manifest清单导入项目到gitlab中

文章目录 说明使用manifest得要求Manifest 格式演示示例 说明 从gitlab 11.2引入此功能。 GitLab 允许根据manifest清单文件(如 Android 存储库使用的清单文件)导入所需的 Git 存储库。 使用manifest得要求 GitLab 必须对其数据库使用 PostgreSQL。至少…

最终Docker6:nacos集群部署

目录 mysql容器构建 1.进入soft 文件夹,创建mysql文件夹 2.进入conf文件夹 放入my.conf 配置文件 3.运行mysql容器 4.进入script文件夹 导入 sql文件 5.进入mysql 容器 并登录 6.创建nacos 数据库并使用,运行nacos.sql文件 7.授予用户所有权限 部…

解析Linux中的VFS文件系统机制(根文件系统的由来)以及 ARM Linux启动流程-根文件系统的加载

《解析Linux中的VFS文件系统机制(根文件系统的由来)》 以及 《ARM Linux启动流程-根文件系统的加载》两篇文章都是好文章,但是第一篇缺少了rootfs的由来,让人觉得不能融会贯通,缺点火候。 第一篇文章:试图…

深入理解MyBatis中的#{ }和${ }占位符及参数传递过程

深入理解MyBatis中的#{ }和${ }占位符及参数传递过程 MyBatis是一个广泛使用的持久层框架,它以其强大的数据库访问能力和灵活的SQL映射配置而著称。在MyBatis中,#{ } 和 ${ } 是两种常用的占位符,用于构建动态的SQL语句。本文将深入研究这两种…

扭蛋机小程序搭建:互联网时代下的“潮玩经济”

近几年,潮玩文化逐渐兴起,盲盒经济闯入了各个消费者的视野中。扭蛋机不同于盲盒,包含的产品多数来自于各类热门动漫IP等,这些产品被装进一个扭蛋中,大众根据概率获得不一样的产品。扭蛋机具有产品多样、好玩不贵的特点…

【Git】实习使用记录

Git 高频命令、版本回退、分支操作、文件修改删除、撤销、标签、远程仓库推送、拉取 https://blog.csdn.net/wohu1104/article/details/105601657 浏览器可以访问github仓库,但是使用git就用不了 https://blog.csdn.net/m0_63230155/article/details/132070860 可…

Vscode安装Eslint扩展后无法实现保存自动修复

前言: 一个现有项目引入eslint时,vscode的eslint扩展会报很多错,通过打开eslint的autoFixOnSave配置自动修复。 从2.0.4版本开始,eslint扩展就移除了autoFixOnSave配置项。因为保存自动修复成为了vscode的Code Action on Save的一…

基于FPGA的图像双边滤波实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 双边滤波数学模型 4.2 双边滤波的特性 4.3 FPGA实现架构 5.算法完整程序工程 1.算法运行效果图预览 将FPGA数据导入到matlab对比测试: 2.算法运行软件版本 vivado2019.2 …

c# 自定义 滑块TrackBar

辛苦半天做出来的,如果觉得好用,记得点赞 效果图如下: 具体操作: 1 、添加代码(代码在下面),重新生成下整个工程,在工具栏中就出现控件,将控件拖到窗体中 2、只需要调整…

使用人工智能助手 Github Copilot 进行编程 01

本章涵盖了 AI 助⼿如何改变新程序员的学习⽅式为什么编程永远不会再⼀样了AI 助⼿如 Copilot 的⼯作原理Copilot 如何解决⼊⻔级编程问题AI 辅助编程的潜在危险 在本章中,我们将讨论人类如何与计算机进行交流。我们将向您介绍您的 AI 助手 GitHub Copilot&#x…

dp专题15 零钱兑换

本题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目: 思路: 这道题,是个比较模板的完全背包问题,这里要求的是问凑成总金额所需的最少的硬币的个数。 我们明确一下 dp[ …

QT第四天

要求&#xff1a;使用QT完成计算器UI设计&#xff0c;如下图&#xff1a; 程序运行结果&#xff1a; 代码&#xff1a; mainwindow.ui <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>MainWindow</clas…