【C语言】发明链表的人真是太有才啦

作者: 沙猪教写程序分类: 计算机技术 发布时间: 2023-09-28 17:36:15 浏览:85383 次

【C语言】发明链表的人真是太有才啦

沙猪教写程序:
链表存在的意义主要有以下几点: 无需事先准备足够大的内存空间。链表在插入数据时,只需要确定数据的位置,即链接该数据的前一个数据和后一个数据,无需提前预留大量内存空间。 方便插入和删除操作。在链表中插入或删除数据,只需修改几个指针即可,而不需要像数组那样移动大量数据。 动态扩展内存空间。链表可以根据需要随时扩展或收缩,以适应数据的增加或减少,充分地利用了内存空间,避免了资源的浪费。 可以存储大量数据类型的数据。链表可以存储各种数据类型的数据,包括整数、浮点数、字符、字符串等等。 可以高效地进行查找和排序。链表中的元素可以通过指针直接进行访问和修改,因此可以高效地进行查找和排序操作。 方便进行动态数据的操作。例如,对于一些需要频繁插入和删除的数据,使用链表会比数组更加方便快捷。 综上所述,链表在计算机科学中被广泛应用,尤其是在需要频繁进行插入、删除操作或动态扩展内存空间的场景中,具有很高的实用价值和应用价值。

【回复】回复 @宁馨儿Nxer :看视频Σ(゚д゚;)
【回复】回复 @宁馨儿Nxer :在哪都能看到gtnh佬
【回复】回复 @宁馨儿Nxer :[笑哭]
钾-:
up推的广告《长安三万里》是什么意思?里面讲C数据结构了吗[星星眼]

【回复】因为原本B站推的是卖车广告 我觉得能看我视频的肯定买不起我就自己换了个文艺点的广告[doge]
【回复】讲的很生动,希望继续更新此系列
【回复】回复 @沙猪教写程序 :不愧是你[脱单doge]
沙猪教写程序:
完整代码在这里: #include<stdio.h> #include<stdlib.h> #include<string.h> struct STUDENT { char name【21】; int id; struct STUDENT *next; }; typedef struct STUDENT STU; int main() { STU *p,*head,*tail; int n=3,i; p=(struct STUDENT*)malloc(sizeof(struct STUDENT)); head=p; tail=p; head->next=NULL; for(i=0;i<n;i++) { p=(struct STUDENT*)malloc(sizeof(struct STUDENT)); printf("请输入姓名:"); scanf("%s",&p->name); printf("请输入学号:"); scanf("%d",&p->id); tail->next=p; tail=p; tail->next=NULL; } p=head->next; while(p!=NULL) { printf("姓名:%s 学号:%d\n",p->name,p->id); p=p->next; } return 1; }

【回复】回复 @笔墨画流年 :你这是教材内容吧[辣眼睛]
【回复】回复 @木几工丂 :证明你不关注我 我可是个随手附带代码的好up[脱单doge]
沙猪教写程序:
这是哪个up 一点都不火 有那么多闲时间回复大家伙问题[星星眼]

【回复】回复 @我想吃掉彦宝 :用这个落后的编译器干嘛,看看人家企业开发用啥
【回复】回复 @風チノ :这个对我来说没有用,我早就试过了,也试过把MG文件换了,不过换了之后只能运行编译过的文件
【回复】回复 @我想吃掉彦宝 :回复 @沙猪教写程序 :解决方法1:换个编译器吧,dev太难使了。[doge] 解决方法2:大量的输出到命令行中可以考虑使用缓冲区,但是考虑到你是大一的,所以我觉得应该永不太上。[doge]
AI视频小助理:
一、链表的原理和构建方法,包括使用结构体数组和指针,以及如何为指针分配内存和进行内容输入。 00:01 - 链表是一种像链条一样的存储结构 01:10 - 链表使用结构体指针连接结构体,形成链表 02:57 - 使用for循环输入链表,完成内容输入 二、链表的构建过程和遍历方式,链表可以自由扩充元素数量,存储密度高,效率高,但访问链表元素需要从头节点逐个查找。 03:00 - 使用MC函数分配内存,创建链表 04:11 - 访问链表内容,使用while循环 05:11 - 链表可以自由扩充元素数量,删除和插入操作 --本内容由AI视频小助理生成,关注解锁AI助理,由@执念蛋黄酥 召唤发送

-_ggg_-:
循环里面的tail->next=p;是不是应该是head->next = p. ???疑惑一下。

【回复】head是头结点是不变的 它所在的地方就是标记的开始处 链表的延长是从尾巴延长的所以是tail在后移
【回复】回复 @Recour重现 :要在上一个链表存放下一个链表的地址
【回复】因为开始时head的指向与tail指向是一样的。刚开始运行时,其实相当于head->next =p,但是为了后面运行所以使用tail,尾部插入,而头部head保持不变
向月亮吹哨:
还是有些不太明白的是head->next为空指针了如何连接下一个结构体 看视频感觉是一开始tail和head一样通过它的移动把下一个链接了 但是画图的时候又感觉好抽象 因为head->next始终为空指针 想问问up怎么理解呢[大哭][大哭]

【回复】回复 @凡人事真烦 :因为一开始head和tail指向的是同一个内存 所以第一次循环更改了tail就是更改了head
【回复】就跟赋值一下 a=1然后 a=2那么a的值就被更改成了2 同样开始我们给head的next指向为空 后续进行更改指向
【回复】回复 @沙猪教写程序 :但后面不是tail在不断更改指向嘛,head->next不还是null?
丶伞兵一号丶:
我看翁恺的没看懂,这个一看就懂,感觉好很多[笑哭]

KLONY:
感谢up,某985大数据在读,听老师念叨四节课云里雾里,up五分钟视频直接让我醍醐灌顶[大哭][大哭][大哭]

GLULX:
只是随便定义一个*head,即为头节点,这是约定俗成的吗? *tail移到了指向for循环的新*p,那原本的“tail”链表结构体应该如何称呼呢???

【回复】我没看懂,最后怎么编li的
超级银河系怪兽:
//弄出3个结构体指针 STU *p,*head,*tail; //弄出1个能装得下,前面结构体大小的内存,并且指针p指向该内存。 p=(struct S...

忒司:
谢谢up了,上课老师讲这节全念ppt看不懂,你的动图我一下就明白了[星星眼][星星眼][星星眼]

氧气毁灭者:
我把up的代码原原本本地抄了下来,为什么输入完之后遍历内容打不出来呢?

不爱吃海鲜的GaN:
stu*p,*head,*tail三个指针是不是只有p默认指向结构体?

寒林空见日斜时1:
链表就得动态去讲解 这个视频非常棒!

道具西北:
我去终于来个救命的博主,看翁恺老师讲的我都傻眼了!投币了

教学 计算机 C语言 程序 指针 C/C++ 链表 必剪创作 程序员研究所

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!