172322 2018-2019-1 《Java软件结构与数据结构》实验一报告

172322 2018-2019-1 《Java软件结构与数据结构》实验一报告

  • 课程:《程序设计与数据结构》
  • 班级: 1723
  • 姓名: 张昊然
  • 学号:20172322
  • 实验教师:王志强
  • 助教:张之睿/张师瑜
  • 实验日期:2018年9月30日
  • 必修/选修: 必修

1.实验内容

  • 此处填写实验的具体内容:

实验内容过多,故参考做业:php

2.实验过程及结果

过程:

  • 本次实验总共五个提交点。我也分为五个部分来写过程。
    • 第一:由于以前利用链表实现过队列,故此次就直接import了以前的LinkedQueue将须要输入的元素放入链表队列之中后再输出,利用了数组的方法将元素以空格隔开后再放入链表中,最后打印整个链表。
    • 第二:在第一个节点的基础上利用InputStreamReaderBufferedReader读取文件123.txt的数字8和9,并在LinkedQueue中新写入了addInListaddFisrt方法使得能够将元素插入到链表中的第五位和首位,新写入了delete方法删除指定位置的元素。
    • 第三:在第二个节点的基础上在LinkedQueue中写了selectionSort()方法,排序完成后按照要求输出。
    • 第四:利用数组来实现以前链表所实现的第一和第二个节点,可是由于以前实现的队列是利用循环数组来实现的不方便指定位置的插入和删除,故新写了非循环单向数组类myarray,以后的实现均以它为基础,第一部分的实现与链表的实现类似,而且相应的写入了insertInarray方法实现指定位置的插入,delete实现指定位置的删除。
    • 第五:在第四个节点的基础上在myaraay中写入了selectionSort()方法实现排序后按要求输出。

结果:

1.java

2.node

3.git

4.
web

5.
数组

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

本次实现的问题大可能是一些小问题,由于在以前的学习中已经接触了很是屡次的链表和数组,对于它们的原理与实现都比较清晰了。

  • 问题1:在作节点一时对于怎样将输入的元素利用空格隔开后再放入队列中产生了疑惑。
  • 问题1解决方案:向王文彬同窗求助,他给我提供了
String[] a = sentence.split(" ");
        for (int i =0;i<a.length;i++){
            queue.enqueue(a[i]);
        }

利用数组将每一个元素分开后再放入一一放入队列之中,真是妙呀数据结构

  • 问题2:在作节点二时须要将数字二插入首位,可是链表的首插法没有实现过,因此我就在网上找了不少不少的实现方法,结果都是致使整个链表丢失。
  • 问题2解决方案:在被逼急事后决定本身写一个头插法,在通过本身许久的思考和仔细的画图事后写下了如下方法
public void addFisrt(T element)
    {
        LinearNode<T> node = new LinearNode<T>(element);
        current = head;
        node.next = head;
        head = node;
        count++;
    }

而后竟然就成功了...成功了......我这个时候就很纠结,为啥我要花一个下午的时间去网上查如何实现,最终却只花了本身十分钟的时间写出了这个方法呢......学习

  • 问题3:在节点二中从文件中提取元素都很是顺利可是如何将两个元素利用分开而后转化为整形就有了一些困难。
  • 问题3解决方案:又向王文彬同窗求助了,他又为我提供了
int n1 = Integer.parseInt(String.valueOf(lineTxt.charAt(0)));
         int n2 = Integer.parseInt(String.valueOf(lineTxt.charAt(2)));

在提取了元素的同时将元素转化为整形,真是厉害。设计

  • 问题4: 在实现节点四时,在数组中间插入元素一直插不进去,不是插的位置本来的元素没了就是后面的元素全变成了须要插入的元素。
  • 问题4解决方案:幸亏此次是王老师在旁边,就直接向王老师求助了,他为我从新讲解了数组插入元素的原理,须要先将后面的元素所有向后移动一位以后再在本来位置插入须要插入的元素。Just like:
for (int i = elements; i > index-1; i--) 
    {

            array[i+1] = array[i];


    }
            array[index] = element;

代码托管

其余(感悟、思考等)

感悟

  • 网上的东西不必定是最好的,有的时候本身去思考、去实现比一开始就去网上找须要的东西会好得多,不能有偷懒的思想。

参考资料

相关文章
相关标签/搜索