| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 小鲤算法C(单链表系列2之创建链表) -> 正文阅读 |
|
[数据结构与算法]小鲤算法C(单链表系列2之创建链表) |
目录
? ? ? ? ?你掌握了基础知识吗?恭喜你,技能点get+1。但是今天的内容稍有难度,准备好了吗?
? ? ?单链表的创建方法有尾插法和头插法,每种都有带头节点和不带头节点两种?。今天小鲤主要介绍链表的创建的带头节点的尾插法,是最为简单的。 ? ?首先,你得了解单链表是什么形式。假设你是一名地下情报工作人员,你的上线知道你的联系方式,所以他可以找的到你。但是,你没有他的联系方式,所以你找不到他。不过,你也有你的下线的联系方式。这次是你能找的到你的下线,但是你的下线找不到你。但是,如果你非常苦逼,没有下线的话(链表最后一个节点),你就只能靠你的上线来找你了。当然,你足够幸运的话,你没有上线(head头节点),却有一个可以被找到的下线。 (不会被搞😵了吧?那就再看看两遍再继续吧。希望小鲤的讲解够形象)
?我们这里以创建一个存放学生学号,性别和姓名的链表为例。 1,创建结点
上一节的必备基础知识3结构体知识用到了吧,这里就不解释了。忘记的感觉回去看一看。 思考🤔 struct link_list *next是什么?拿来干什么的? 😎struct link_list类型指针。是用来联系你下级的。你和你下级(下一个结点)唯一的联系方式就是这个next指针。强调,他只是一个指针,所以不要搞复杂想着他有没有什么成员。初学者易犯!!! 2,主函数
先讲主函数吧,上游决定下游。难的放在最后呀。 (1)变量n是我们要创建结点个数; (2)创建头结点指针。这个指针指向我们申请的struct link_list空间。这个空间的数据域是不存放任何东西的,而这个空间的next指针将会指向第一个结点。 malloc是申请空间函数。(struct link_list*)是类型强制转换。 思考🤔 为啥要申请空间啊,我直接struct link_list*head它不香吗? 😎 上文已经提示过来,他只是指针!!!他没有自己的空间。所以仅仅定义一个struct link_list类型指针是没办法指向成员的。 (3)?思考🤔 head->next为什么要为NULL? 😎NULL的意思是0,事实上,我们直接写0也没有任何问题,但是编译器有时可能会爆。一般而言,NULL经常被使用。NULL即是空。 也就是说为啥要把头指针的next置空呢?道理很简单,这个时候他还没有下线,所以没有联系方式(即指向下一个结点地址),但是我们不给它赋初值会很可怕的,系统会给它分配一个随机地址,此时它也就是我们常说的野指针了,所以如果指针不知道指向谁时,请给它置空。 3,创建链表函数开始了,开始了,前方高能预警,建议记好笔记(当然笔记是不可能滴,所以就只能点💖了) 老规矩,我们先放代码再讲解。
是不是出乎意料的少?欸,小鲤其实想看看先前听见小鲤说挺难的之后,有多少人真正为了学知识留下来,嘿嘿 (1)这里我们创建了两个指向struct link_list变量指针,这部分最为重要的就是这两个指针的含义了。 思考🤔 ?为什么要定义两个指针,他们是起什么作用呢? 😎两个问题其实在问一个问题,就是两个指针作用。对于p指针来说,它是负责指向一个新的结点的。而q指针是一个临时变量,它负责转交地址。 (2)循环,注意到传入参数的n,代表结点个数。要创建几个结点,就循环多少次。 (3)这里就是申请的内存空间的。每循环一次,创建一个结点,就申请了一个空间。再还没有给它连上主体时,用p指针来记住它。 ?(4)这里分几步进行,小鲤手绘了几张图(小鲤手残,勿怪勿怪) ①q->next=p让q的next指向创建的节点。 ?这里的空白结点是之前向内存块申请的地址,被p指向。 ?①的操作为绿色→,蓝色→为之前的操作。 ②让q临时变量指向创建的节点地址。 (5)随时让下一个结点指针域置空。 然后循环操作,直到循环结束。 好啦,创建完成了,赶紧在你的编译器上试一试吧。 小鲤只是一条想要好运的笨鲤鱼o(* ̄▽ ̄*)ブ 今天的内容已经结束了>_< 如果我的文章对你有帮助,不要吝惜你的点赞,小鲤希望得到你的支持?(′?`?) 求三连和关注!!! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 16:30:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |