20172324 2018-2019-1《程序设计与数据结构》实验1报告
20172324 2018-2019-1《程序设计与数据结构》实验1报告
课程:《程序设计与数据结构》
班级: 1723
姓名: 曾程
学号:20172324
实验教师:王志强
实验日期:2018年9月30日
必修/选修: 必修
一、实验内容
链表练习
- 实验一:通过键盘输入一些整数,建立一个链表
- 打印所有链表元素, 并输出元素的总数。
- 用一个特殊变量名来纪录元素的总数,变量名就是你的名字。 例如你叫 张三, 那么这个变量名就是int nZhangSan = 0; //初始化为 0.
-
实验二:实现节点插入、删除、输出操作
从磁盘读取一个文件, 这个文件有两个数字。
从文件中读入数字1, 插入到数组第 5 位,并打印所有数字,和元素的总数。 保留这个数组,继续下面的操作。
从文件中读入数字2, 插入到数组第 0 位,并打印所有数字,和元素的总数。 保留这个数组,并继续下面的操作。
从数组中删除刚才的数字1. 并打印所有数字和元素的总数。 -
实验三:使用冒泡排序法或者选择排序法根据数值大小对链表进行排序
- 在排序的每一个轮次中, 打印元素的总数,和目前链表的所有元素。
数组练习
- 实验四:通过键盘输入一些整数,建立一个链表
- 打印所有数组元素, 并输出元素的总数。
- 在你的程序中,请用一个特殊变量名来纪录元素的总数,变量名就是你的名字。 例如你叫 张三, 那么这个变量名就是int nZhangSan = 0; //初始化为 0.
- 实现节点插入、删除、输出操作
- 从磁盘读取一个文件, 这个文件有两个数字。
从文件中读入数字1, 插入到数组第 5 位,并打印所有数字,和元素的总数。 保留这个数组,继续下面的操作。
从文件中读入数字2, 插入到数组第 0 位,并打印所有数字,和元素的总数。 保留这个数组,并继续下面的操作。
从数组中删除刚才的数字1. 并打印所有数字和元素的总数。
- 实验五:使用冒泡排序法或者选择排序法根据数值大小对数组进行排序
在排序的每一个轮次中, 打印元素的总数,和目前数组的所有元素。
二、实验过程及结果
-
实验1结果截图:
-
实验2结果截图:
-
实验3结果截图:
-
实验4结果截图:
-
实验5结果截图:
三、实验过程中遇到的问题和解决过程
-
问题一:实验二的时候,编完代码运行的时候发现只能toString一次,如图所示,第二次无法将链表里的元素打印出。
-
问题一解决方案:感觉应该是delete或者insert中某一个方法写错了导致的,就用了debug调试,发现delete没有问题
后来将insert步骤删去后,就能正常打印了。
那就只能是insert的问题,那么问题来辽,insert那一步出什么问题了呢?后来,我发现我写的方法是要求我在某一个位置插入一个数,
public void insert(T element, int n )
但是我编写的代码是只能在head处插入才能成功插入的,发现问题了!
- 问题二:做实验二时出现了java.util.NoSuchElementException的错误提示,百思不得其解。
- 问题二解决方案:编写代码的时候要注意一些微小差别带来的巨大差别..比如这个地方,
我将str定义为字符串分隔的名称,但是在下面不小心打成了st,因为编写的时候存在st所以没有报错,但是就导致了nosuchelmentexception的存在
- 问题三:二插到第二位了
- 问题三解决方案:检查insert代码,没有考虑插入第0位时和后面不一样的情况
做完了所有...除了1-3的排序,实在不会做了然后问qx她方法里的head指代的是什么,她过来帮我看了看代码,然后告诉我我之前都敲错辽,虽然结果是一样的,但根本不是一个链表,只是自己手动添加的...得重新写...