问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言 头插法的链表该如何建立 算法是什么? 麻烦各位兄弟讲一下 小弟实在理解不了

发布网友 发布时间:2022-05-03 01:37

我来回答

1个回答

热心网友 时间:2023-10-03 01:31

链表其实很简单,很容易理解的,只要把它当做循环理解就好了,只不过是一个较为特殊的循环,不要把它想象的太难

首先结构体知道吧,知道就好办,不知道就赶紧复习一下,只有吃透了结构体,才能明白链表,不然链表没法讲

首先定义全局变量 结构体(链表结点的结构体类型,也可以简单的理解所谓结点就是指这个结构体)

案例:输入学生名字和编号

#include "stdio.h"
struct person
{
char *name;
int numbers;
struct person *next;
};

//指针*next起连接作用,是结点和下一个结点的桥梁,必不可少!

在定义 主程序

main()
{
struct person *head,*p1,*p2;

//定义链表操作时的三个指针,*head为头指针;*p1为申请下一个结构体的内存空间(即新的结点),用于存放新的数据;*p2为保存*p1所申请的内存空间(即保存新结点),也就是保存p1中的数据;三个指针缺一不可!

p1=p2=(struct person *)malloc(size);
head=p1;

//malloc函数申请第一个结点,让p1、p2、head共同指向同一个内存空间(即申请的第一个结点)

scanf("%s%d",p1->name,&(p1->numbers));

//向申请的第一个结点输入数据

//下来就该进入循环了

while(p1->numbers !=0)
{
p2=p1;
p2->next=p1;
p1=( struct person *)malloc(size);
scanf("%s%d",p1->name,&(p1->numbers));
}
p2->next=NULL;

//此时就进入了链表的核心算法,得给你好好讲讲!

//循环的判断条件是学生的编号(numbers)不等于0,首先判断第一个结点输入的学生编号是否为0

1.当不为0时,执行循环当中的内容

首先,让p2保存p1申请的结点(即p2=p1)

然后让p2中的next指向p1(即p2->next=p1),在让p1去开辟下个结点

然后用malloc函数申请下一个结点,也就是p1开辟新结点(即p1=(struct person *)malloc(size));在这个新开辟的结点输入数据(即scanf("%s%d",p1->name,&(p1->numbers)));

接着就又进入循环判断条件,满足条件继续进入循环语句,不满足则进入语句2

注意p1、p2、head都指向第一个结点,其中head保存第一个结点,而p1、p2都是相互配合变化的,即p1开辟新结点,p2保存p1开辟的结点,如果循环几次,你就可以发现他们的规律了,

2.当学生编号(numbers)等于0时,退出循环

执行p2->next=NULL;其意思是停止p1开辟新结点(在循环语句里next是指向p1,让p1去开辟新结点)

}

如果你能看懂以上内容,那么链表的输入和链表的删除、插入应该也就很容易明白,若有别的问题QQ留言121590680

如果对你有所帮助,请记得采纳最佳答案,谢谢!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
win7不能浏览网页,但用搜狗浏览器高速模式能上网,兼容就不行???求 ... ...64位 IE浏览器无法打开网页 搜狗浏览器可以打开 类似的新窗口网页都... 千牛工作台子账号怎么开权限?子账号的安全设置在哪里? 千牛怎么设置子账号-千牛设置子账号步骤 怎么把CD里的歌曲改成MP3格式? ...戴眼镜吗?想给孩子去检查一下,哪里比较推荐,渭南这块的 Windows Media Player将CD音乐转换为MP3 最简单的方法将CD转换为MP3音频文件(一步一步教你将CD音乐转换为MP3格 ... 孩子最近视力下降了有可能是近视吗?渭南哪里可以免费检查视力啊 奥运会跳远世界纪录 请教关于尾插法建立单链表的算法 数据结构 单链表 算法 基于链表的算法分析 求助大神单链表算法题 三个关于链表的算法问题,分别是排序,插入和倒序 编写链表算法 求几个有关链表的最基本算法 苏州市所有品牌车的4s店地址和联系方式? 梦见帮她人找到了要找的人 女朋友对你说男同事帮她滴眼药水是何意? 老友记中,瑞秋不要滴眼药水,结尾被莫妮卡一帮人按住强滴的那是哪集? 茶的主要成份是什么? 绿茶和黄茶的主要区别有哪些? 白山黄茶有用吗 给别人上眼药是什么意思? 茶的成分都有哪些? 做梦梦见滴眼药水是什么暗示啊? 牛山黄茶可以喝吗? 南山黄茶效果咋样? 经常喝黄茶对身体都有哪些好处?哪些体质的人群不适宜喝? 数据结构关于单链表算法问题 单链表的排序算法,哪位大师麻烦您说一哈,感激不尽! C语言单链表算法问题 单链表 递归算法 链表算法题 单链表排序的算法 数据结构 单链表初始化算法 javaScript,怎么读写Cookie? javascript中cookie怎么用 javascript 写入和读取cookie javascript 求怎么写入和查看cookies javascript如何读cookie 《万恩千爱》的原唱完整版是什么? 漳州光华学校感恩父母歌表演这个视频,由妈妈,我爱你,父亲这两首歌,最后的纯音乐是什么歌曲? 《万恩千爱》的原唱 是王琪吗? 重庆和成都哪个繁华 歌曲《万恩千爱》原唱是谁? 重庆繁华还是泉州繁华? 成都繁华还是重庆繁华? 求万恩千爱简谱