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

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

1.实验内容

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

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

2.实验过程及结果

过程:

  • 本次实验总共五个提交点。我也分为五个部分来写过程。

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

结果:

1.

2.

3.

4.

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;

代码托管

其他(感悟、思考等)

感悟

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

参考资料

172322 2018-2019-1 《Java软件结构与数据结构》实验一报告的更多相关文章

  1. 20172328 2018—2019《Java软件结构与数据结构》第二周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第二周学习总结 概述 Generalization 本周学习了第三章集合概述--栈和第四章链式结构--栈.主要讨论了集合以 ...

  2. 20172302 《Java软件结构与数据结构》实验三:查找与排序实验报告

    课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月19日 必修/选修: 必修 实验内容 (1) ...

  3. 20172302 《Java软件结构与数据结构》实验二:树实验报告

    课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月5日 必修/选修: 必修 实验内容 (1)参 ...

  4. 20172302 《Java软件结构与数据结构》实验一:线性结构实验报告

    课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年9月26日 必修/选修: 必修 实验内容 (1)链 ...

  5. 20172301 《Java软件结构与数据结构》实验三报告

    20172301 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...

  6. 20172301 《Java软件结构与数据结构》实验二报告

    20172301 <Java软件结构与数据结构>实验二报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...

  7. 20172329 2018-2019 《Java软件结构与数据结构》实验三报告

    20172329 2018-2019-2 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...

  8. 20172329 2018-2019-2 《Java软件结构与数据结构》实验二报告

    20172329 2018-2019-2 <Java软件结构与数据结构>实验二报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...

  9. 20172301 《Java软件结构与数据结构》实验一报告

    20172301 <Java软件结构与数据结构>实验一报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...

随机推荐

  1. mysql千万级数据量根据索引优化查询速度

    (一)索引的作用 索引通俗来讲就相当于书的目录,当我们根据条件查询的时候,没有索引,便需要全表扫描,数据量少还可以,一旦数据量超过百万甚至千万,一条查询sql执行往往需要几十秒甚至更多,5秒以上就已经 ...

  2. JQuery中事件冒泡

    JQuery中事件冒泡 定义 在一个对象上触发某类事件,就会执行此事件程序,如果没有处理事件就会向这个对象的父级对象传播 直至它被处理,最顶层老大为document对象. 作用 事件冒泡允许多个操作被 ...

  3. jsp小基础归纳

    JSP的本质就是一个Servlet,JSP的运行之前会先被Tomcat服务器翻译为.java文件,然后在将.java文本编译为.class文件,而我们在访问jsp时,处理请求的就是那个翻译后的类. 1 ...

  4. golang总结-并发

    目录 2.7 并发编程 go协程 go管道 2.7 并发编程 go协程 golang 通过一个go关键字就可以开启一个协程. func main() { //两个交错输出 go sayHello() ...

  5. python学习之网络编程基础

    引入场景:客户与银行关系 银行职员负责给客户提供取钱服务,客户通过账户密码跟银行职员建立合作关系.此时银行职员就可以作为服务器,当用户A取完钱后他需要等待下一个用户的接入,用户的账号密码就是建立合作关 ...

  6. 学习python的一些脚本

    python生产者与消费者模型 # -*- coding:utf-8 -*- import threading import random import time gMoney = 1000 gLoc ...

  7. 旁听<基因编辑与精准医疗>(北京大学)

    昨天去北大生命科学院听了一场魏文胜教授关于基因方面的讲座.会场人不算太多,比起上次听城市规划,场面略显冷清.也能从一个侧面反映,关注基础科学领域的人虽然有,但是不是很多. 开场魏教授用了宣传海报作为导 ...

  8. ACM--移动桌子--贪心--HDOJ 1050--Moving Tables

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem Descript ...

  9. linux c makefile

    unio : unio.c gcc unio.c -o unio run:  ./unio 上面有错.必须强制按照规则来: 目标体:依赖文件 命令 命令必在目标体的下一行,且要加TAB键,必须必须. ...

  10. String类使用

    String类的使用 String类 String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.S ...