作品:宿舍歌单(链表版)
宿舍共用一个歌单,结点里存歌名。命令有三种: + 歌名:加到歌单最后; ^ 歌名:置顶,插到最前面; - 歌名:删掉这首(没有就不管)。 输入命令条数 n 和 n 条命令,输出最终歌单,一行一首;删空了输出 歌单空了。例如输入: 3 + 晴
带头结点的链表:h 后面才是数据
带头结点的链表:h 指向一个不存数据的头结点 h 头结点 → 7 → 2 → NULL 头结点的 data 不用 第一个数据结点是 h->next 二级的链表题,链表前面常常多一个头结点:它不存数据,只负责「站岗」。h 指向头结点,真
带头结点:输出里怎么多了个 0
宿舍四个人的体测成绩建成了带头结点的链表,应该输出: 88 73 95 60 可开头多了一个 0。先运行,看画布上 p 从哪个结点出发;再改一处。 代码里以 @youci 开头的 printf 只负责运行后在画布上显示中间值,不影响输出和判
母题:只写 fun 求链表平均分
请编写函数 fun:返回带头结点链表 h 中所有数据的平均值(至少有一个数据)。main 输出时保留两位小数。 例如链表为 90 85 81 时,返回 85.333…,输出: 85.33 注意:creat、outlist、freelist
变式 1:只写 fun 返回最高分的结点
请编写函数 fun:返回带头结点链表 h 中 data 最大的那个结点的地址(有并列时返回最前面的;链表里至少有一个数据)。 main 会用这个地址输出最高分和它排第几。例如链表为 70 92 85 时,输出: 最高 92 分,第 2 个
变式 2:只写 fun 挑出低于平均分的成绩
请编写函数 fun:把带头结点链表 h 中低于平均分的数据按原顺序放进数组 b,返回放了几个(链表里至少有一个数据)。 例如链表为 60 90 75(平均 75)时,b 里是 60,返回 1,输出: 1 人:60 注意:creat、outl
变式 3:只写 fun 把链表逆置
请编写函数 fun:把带头结点的链表 h 逆置(第一个变最后一个……),不新建结点、只改指针。 例如链表为 2 4 6 8,逆置后输出: 8 6 4 2 提示:把数据结点从前往后一个个摘下来,用头插法插回 h 的后面。 注意:creat、o
变式 4:只写 fun 删除有序链表里的重复成绩
带头结点的链表已经从小到大排好。请编写函数 fun:值相同的结点只保留第一个,多余的删掉并 free。 例如链表为 1 1 2 3 3,处理后输出: 1 2 3 注意:creat、outlist、freelist 和 main 函数已经写好
二级 · 程序填空:带头结点链表排序
函数 fun 把带头结点链表中的数据按从小到大排序(只交换 data,不动指针)。程序输出 1 3 5 8。请在【】处填入正确的内容。 #include <stdio.h> #include <stdlib.h>
二级 · 程序改错:带头结点链表求最大值
下面程序中,函数 fun 的功能是:返回带头结点链表中数据的最大值。例如链表为 -5 -2 -9 时,输出 max = -2。 程序中有两处错误。请改正 found 下面一行中的错误,不要改动其他地方,也不要增删行。