链表

一、PTA实验作业

题目1:7-11 单向链表3:编程实现:输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:输入一个正整数 n(0<n<=9)和一组(n个)升序的整数,建立单向链表,再输入一个整数 x,把 x 插入到这组数据中,使该组数据仍然有序。

1. 本题PTA提交列表

2. 设计思路

主函数中输入repeat,做repeat次循环。每次循环都先输入该次循环数据的个数n,然后把这n个数据存储在链表中,最后输入待插入整数x,调用子函数fact(head,n,x)。子函数fact(head,n,x)分为三种情况:一,x<=链表的第一个数据,即头插法;二,x比链表里的所有数据都大,即尾插法;三,x位于链表中。分别有不同的处理方法。

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

(1)格式错误:题目要求的输出格式是两个数据间有一个空格,行末不要空格。而我的输出是每个数据后面都带了一个空格。

4.代码截图。

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

 

1.本题PTA提交列表

2. 设计思路

在主函数中每记录一次数据就用一次头插法,这里的for循环以-1为标志结束,最后就变成倒序输入了,然后在输出时注意格式问题即可。

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

(1)格式错误:与上题错误点一样。行末不能加空格。

4.代码截图。

题目三:7-13 单向链表5:定义单向链表struct Node并实现:输入若干个学生信息(包括学号、姓名和成绩),输入学号为0时输入结束,再输入一个成绩值,将成绩小于该值的学生信息删除,并将成绩大于等于该值的学生信息输出。

1.本题PTA提交列表

2. 设计思路

因为p->num=0是结束的标志,所以让动态分配后的初始化为-1。第一个for循环用于输入所有数据;第二个for循环用于删除分数比grade低的同学的信息,分为两部分:一,被删除点位于头结点,二,被删除点不是头结点;第三个for循环用于输出已删除后的链表。

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

(1)答案错误:在第二个for循环中出现了逻辑上的错误,不能正确把握链表删除结点的操作。之后经过不断调试,还是正确了。

4.代码截图。

二、同学代码结对互评

1.互评同学:陈冰艳

2.我的代码、互评同学代码截图

陈冰艳同学的代码:

我的代码:

3.我和陈冰艳同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?

不同在于:陈冰艳同学的代码在删除特定结点的条件语句分成了两部分,一为被删除结点为头节点,二为被删除点不是头结点。最主要的代码差异在于删除特定结点这一部分,陈冰艳同学的语言更加标准,且运用了多个子函数,函数名也有实际意义。而我直接用判断语句输出结果,并没有按照题目要求删除结点(这样很不好!)。

各自优势:陈冰艳同学完全按照题目的要求编译代码,且代码语言简洁明了。而若是题目不要求删除特定节点,我的代码会更加简短。

我更喜欢陈冰艳同学的代码。

三、截图本周题目集的PTA最后排名。

四、本周学习总结

1.我学会了简单的链表,可以解决部分链表题目,例如:逆序输出数字。

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

删除结点对我来说难度还是不小。例如7-10,7-13.

3.链表考试总结

(1).哪题做错了,怎么改?

    7-10:题目要求先将已有数据某一部分删除后输出另一部分,可是在删除时遇到了未知原因的阻力,导致答案错误,而直接输出题目要求的那部分是正确的,但总感觉没完成作业。

(2).考试结果满意么,怎么改进?

  考试结果感觉还可以,但是考试的过程并不理想,代码打出来很简单,但是总要经过一番不断的调试才能达到正确。加深自己对链表的理解,深入学习链表知识点。

 

 

 

posted @ 2018-01-12 00:20  信管罗艺芳  阅读(1074)  评论(0编辑  收藏  举报