20172303 2018-2019-1 《程序设计与数据结构》第2周课堂实践修改报告
测试内容
public static void InsertNode(Student Head, Student node){
}
- 需求分析:该题要求的是在一个链表的结尾插入一个新的结点
测试过程
- 设计思路:
- 创建一个临时的指针temp用于遍历整个链表直至找到结尾
- 将temp指向新创建的指针node
- 测试过程
- 首先,需要编写Student类。在这个类中定义构造函数(包括姓名、学号、爱好)和结点next,作为一个对象到另一个对象之间的链接。
- 接着编写LinkedListExample类,定义一个单独的引用变量head来表示链表的首结点,创建一个名为student的对象,与head形成链表
- 编写用于结点插入的方法InsertNode。定义两个Student类的参数,head表示链表的首结点,node表示要插入的结点。
- 定义一个指针temp,使它指向head,用于之后遍历列表直至找到链表尾部。创建一个while循环,当temp的next引用不为空时,temp指向temp的下一个对象,这一步使得temp最终循环到链表末端。
- 使temp的next引用指向node这一要插入的结点。
课堂实践错误分析
- 我认为最主要的错误是我没有搞清楚定义方法时,括号里的参数node究竟指的是什么。
- 为上学期我们也做过一个关于链表的课堂测试,在做本次测试的时候我把原来的翻出来想要照着先前的把这回的写出来。但是上回实现的插入是从链表的中间插入,当时做题的时候我并没有搞清楚方法里定义的两个参数指的是什么,以为和上回一样是从中间插入,觉得括号参数里的node指的是插入对象所要插入的位置,然后认为temp是要插入的结点。
- 但是在写的过程中发现temp无法像之前的Magazine中的变量那样定义,只能用具体的参数来定义,我就随便在temp里写了几个参数,然后参照Magazine的代码写完了后面的代码。
- 虽然在课堂实践进行的时候感觉自己的代码不是很对,运行之后也有错误,但是在原来的思路下不论怎么改都改不好,但在测试结束之后一看到老师给的代码之后就明白了自己的问题所在。
其它
- 本学期第二次课堂实验就暴露了自己动手能力和理解能力不行的问题,并且还容易钻牛角尖,认准一个理就不知道变通。只能说离自己本学期的目标还是“路漫漫其修远兮”。