20172308 实验一《程序设计与数据结构》线性结构 实验报告

20172308 2018-2019-1 实验1 《线性结构》报告

课程:《程序设计与数据结构》
班级: 1723
姓名: 周亚杰
学号:20172308
实验教师:王志强
实验日期:2018年9月30日
必修/选修: 必修java

1.实验内容

  • 线性结构之链表(1):经过键盘输入一些整数,创建一个链表,打印全部链表元素, 并输出元素的总数。
  • 线性结构之链表(2):实现节点插入、删除、输出操做,扩展功能,从磁盘读取一个文件,从链表中删除刚才的数字1. 并打印全部数字和元素的总数。
  • 线性结构之链表(3):使用选择排序法根据数值大小对链表进行排序,在排序的每个轮次中, 打印元素的总数,和目前链表的全部元素。
  • 线性结构之数组(4):经过键盘输入一些整数,创建一个数组,打印全部数组元素, 并输出元素的总数;实现数组插入、删除、输出操做, 扩展功能,从磁盘读取一个文件,从链表中删除刚才的数字1. 并打印全部数字和元素的总数。
  • 线性结构之数组(5):使用选择排序法根据数值大小对数组进行排序,在排序的每个轮次中, 打印元素的总数,和目前数组的全部元素。

2. 实验过程及结果

链表与数组练习,全部功能在一个程序中完成

每完成一个功能签入一次码云

  • 线性结构之链表(1):
    1.经过键盘输入一些整数,创建一个链表
    2.这些数是学号中依次取出的两位数,再加上今天的时间
    3.打印全部链表元素, 并输出元素的总数
    4.用一个特殊变量名来记录元素的总数,变量名是你的名字
    5.实验结果截图:
    数组

  • 线性结构之链表(2):
    1.实现节点插入、删除、输出操做
    2.继续上一个程序, 扩展它的功能,每作完一个新功能,或者写了超过10行新代码,就签入代码,提交到源代码服务器
    3.从磁盘读取一个文件, 这个文件有两个数字
    4.从文件中读入数字1, 插入到链表第 5 位,并打印全部数字,和元素的总数。 保留这个链表,继续下面的操做
    从文件中读入数字2, 插入到链表第 0 位,并打印全部数字,和元素的总数。 保留这个链表,继续下面的操做
    5.从链表中删除刚才的数字1. 并打印全部数字和元素的总数
    6.实验结果截图:
    服务器

  • 线性结构之链表(3):
    1.使用冒泡排序法或者选择排序法根据数值大小对链表进行排序
    2.学号是双数, 使用选择排序
    3.在排序的每个轮次中, 打印元素的总数,和目前链表的全部元素
    4.实验结果截图:
    数据结构

  • 线性结构之数组(4):
    1.经过键盘输入一些整数,创建一个数组
    2.这些数是学号中依次取出的两位数,再加上今天的时间
    3.打印全部数组元素, 并输出元素的总数
    4.用一个特殊变量名来记录元素的总数,变量名是你的名字
    5.实现数组插入、删除、输出操做
    6.继续上一个程序, 扩展它的功能,每作完一个新功能,或者写了超过10行新代码,就签入代码,提交到源代码服务器
    7.从磁盘读取一个文件, 这个文件有两个数字
    8.从文件中读入数字1, 插入到数组第 5 位,并打印全部数字,和元素的总数。 保留这个数组,继续下面的操做
    从文件中读入数字2, 插入到数组第 0 位,并打印全部数字,和元素的总数。 保留这个数组,继续下面的操做
    9.从数组中删除刚才的数字1. 并打印全部数字和元素的总数
    10.实验结果截图:

  • 线性结构之数组(5):
    1.使用插入排序法或者选择排序法根据数值大小对数组进行排序
    2.学号是双数, 使用插入排序
    3.在排序的每个轮次中, 打印元素的总数,和目前数组的全部元素
    4.实验结果截图:

3. 实验过程当中遇到的问题和解决过程

  • 问题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之间的转换方法

4.感悟

本次实验的大部份内容都是上学期作过的,此次从新练习了一遍以为本身已经忘得差很少了,但仍是颇有收获的,从新温习了一下知识,仍是要勤学、多回顾之前的知识才好

相关文章
相关标签/搜索