课程:《程序设计与数据结构》
班级: 1723
姓名: 周亚杰
学号:20172308
实验教师:王志强
实验日期:2018年9月30日
必修/选修: 必修java
线性结构之链表(1):
1.经过键盘输入一些整数,创建一个链表
2.这些数是学号中依次取出的两位数,再加上今天的时间
3.打印全部链表元素, 并输出元素的总数
4.用一个特殊变量名来记录元素的总数,变量名是你的名字
5.实验结果截图:
数组
线性结构之链表(2):
1.实现节点插入、删除、输出操做
2.继续上一个程序, 扩展它的功能,每作完一个新功能,或者写了超过10行新代码,就签入代码,提交到源代码服务器
3.从磁盘读取一个文件, 这个文件有两个数字
4.从文件中读入数字1, 插入到链表第 5 位,并打印全部数字,和元素的总数。 保留这个链表,继续下面的操做
从文件中读入数字2, 插入到链表第 0 位,并打印全部数字,和元素的总数。 保留这个链表,继续下面的操做
5.从链表中删除刚才的数字1. 并打印全部数字和元素的总数
6.实验结果截图:
服务器
线性结构之链表(3):
1.使用冒泡排序法或者选择排序法根据数值大小对链表进行排序
2.学号是双数, 使用选择排序
3.在排序的每个轮次中, 打印元素的总数,和目前链表的全部元素
4.实验结果截图:
数据结构
问题1:实验过程当中遇到最大的问题如图:
从排序的结果来看,原本应该是按照选择排序的方式来排序的,排出来的结果甚至连大小都不对
可是仔细看一下,会发现也是有顺序:.net
问题1解决过程:排的顺序是按照数字的第一个数来排的,若是都是一位数结果就是正常的,若是是两位数,排大小却只取两位数的第一位来与其它数比较。好比,会把1认为是与11,111相等。可是这些都是我猜的,而后百度一下我用来排序的方法compareTo;设计
代码中的list是comparable型的,直接用compareTo方法获得的就是我上面所说的结果,可是很奇怪为何会这样;因而强转了String类型,再转成int型做比较便可获得正确排序,如图:
3d
【参考资料】
java中的compareto方法的详细介绍
String类中的compareTo方法总结code
问题2:还有一个问题是,从文件中读取数字,而后赋给一个String类型的变量,本觉得很简单,却发现根本不能直接赋值blog
问题2解决过程:
这里我采起的措施是,先建立文件
OutputStream outputStream1 = new FileOutputStream(file);
再将数字写入文件
outputStream1.write(("1 2").getBytes());
我认为这样就能够保证写进去的数据是string型的,而后直接读取数字赋给string变量就好了
InputStream inputStream1 = new FileInputStream(file); String result = inputStream1.read()
然而事实是,要将读取的数字赋给string变量须要跟多的操做
String result = new BufferedReader(new InputStreamReader(inputStream1)) .lines().collect(Collectors.joining(System.lineSeparator()));
参考资料中有更多的读取数字赋给变量的方法排序
【参考资料】
Java中InputStream和String之间的转换方法
本次实验的大部份内容都是上学期作过的,此次从新练习了一遍以为本身已经忘得差很少了,但仍是颇有收获的,从新温习了一下知识,仍是要勤学、多回顾之前的知识才好