结构体与链表

Posted 不科学的二喵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体与链表相关的知识,希望对你有一定的参考价值。

#一

题目1.

7-1 查找书籍(20 分)

给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。

输入格式:

输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。

输出格式:

在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。

1.本题pta提交列表

本题代码

2.设计思路

以上↑↑↑↑答题思路

3.本题调试过程碰到问题及PTA提交列表情况说明
1.如何定义结构体2.比较价格大小后将书籍对应的信息拷贝

第一次提交

第一次提交输入格式错误,应是先输入书名再输入价格,导致输入答案错第二误。

第二次提交,因为直接用scanf输入书名中不能含空格,所以出现段错误。发现后该用试用getchar()函数,一直读到换行结束。

题目2.

7-3 找出总分最高的学生(15 分)

给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。

输入格式:

输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。

1.本题提交列表

本题代码

 

2.设计思路

↑上答题思路,具体求最高平均分,设计一个循环,定义一个最高分,循环进行比较,最后找到最高分。

3.本题调试过程碰到问题及PTA提交列表情况说明
怎么讲求出来的平均分放入已经定义好的结构体数组中。

第一次提交

输入stydent[i].subject时没有用&stydent[i].subject,因为定义suject时用的是int函数,所以要加&

第二次提交

第二次提交当flag=1时,n应<n-1.

题目3.

7-12 单向链表4(10 分)

定义单向链表:输入若干个正整数(输入-1为结束标志),要求按输入数据的逆序并输出。

输入输出示例:括号内为说明

输入样例:

1 2 3 4 5 6 7 -1

1.本题提交列表

2.本题代码

2.设计思路

 

1输入十个数,以指针方式,每输入一次,指针自加。

2 指针自减一次,即指向最后一个。

3 输出10次,依次自减,即可达到目的。

3.本题调试过程碰到问题及PTA提交列表情况说明

碰到问题,怎么使指针进行自加自减。

第一次提交

 

第一次提交答案错误是因为没有弄清循环输入的条件,当输入的第一个数不为-1时就应该进入循环输入。所以应是while(num!=-1)。

#二、代码互评

互评同学名称:李彦婵(没错又是她(*^▽^*)!!)

题目.

7-9 查找成绩最高的学生(10 分)

编写程序,从键盘输入 n (n<10)个学生的学号(学号为4位的整数,从1000开始)、成绩并存入结构数组中,查找并输出成绩最高的学生信息。

输入输出示例:括号内为说明,无需输入输出

输入样例:

3	(n=3)
1000 85
1001 90
1002 75

我的代码:

彦婵的:

 

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

用的都是结构体且思路差不多,但彦婵直接定义结构体struct max,s1,而我定义的结构体max中包含详细定义,彦婵的程序更加简洁,而我的程序比较详细哦,我更喜欢彦婵的,简单的程序一目了然出错也更加容易找出。

三、截图pta排名

四.本周学习总结

1.你学会了什么?

1.链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

2.插入操作处理顺序:中间节点的逻辑,后节点逻辑,前节点逻辑。按照这个顺序处理可以完成任何链表的插入操作。

删除操作的处理顺序:前节点逻辑,后节点逻辑,中间节点逻辑。
按照此顺序可以处理任何链表的删除操作。
3.结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。
 
在一般情况下,tag、member-list、variable-list这3部分至少要出现2个。

2.本周的内容,你还不会什么?

7-10 单向链表1(10 分)

链表节点定义为: struct Node{ int data; struct Node *next; }

编程实现:输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入若干个正整数(输入-1为结束标志),建立一个单向链表,将其中的奇数值结点删除后输出

输入输出示例:括号内为说明

本题不知道如何进入循环并且跳出循环,因为开始输入num需要进入循环,但输入-1的时候,若num>1,要进入下一个循环,这个点搞得不是很清楚。

3.其他总结

创建链表的过程,,真的很复杂,一知半解是创建不出来的!!要完全搞懂还需努力!!

 

以上是关于结构体与链表的主要内容,如果未能解决你的问题,请参考以下文章

(数据结构)顺序表与链表的基本操作代码以及比较

js原型链结构与链表结构对比

数据结构——栈(线性表与链表)

C语言可以在一个链表里保存两个结构体吗

[知识点] 7.1 栈,队列与链表

[知识点] 7.1 栈,队列与链表