172322 2018-2019-1 《Java软件结构与数据结构》实验一报告
172322 2018-2019-1 《Java软件结构与数据结构》实验一报告
- 课程:《程序设计与数据结构》
- 班级: 1723
- 姓名: 张昊然
- 学号:20172322
- 实验教师:王志强
- 助教:张之睿/张师瑜
- 实验日期:2018年9月30日
- 必修/选修: 必修
1.实验内容
- 此处填写实验的具体内容:
实验内容过多,故参考作业:
2.实验过程及结果
过程:
- 本次实验总共五个提交点。我也分为五个部分来写过程。
- 第一:因为之前利用链表实现过队列,故这次就直接
import了之前的LinkedQueue将需要输入的元素放入链表队列之中后再输出,利用了数组的方法将元素以空格隔开后再放入链表中,最后打印整个链表。 - 第二:在第一个节点的基础上利用
InputStreamReader、BufferedReader读取文件123.txt的数字8和9,并在LinkedQueue中新写入了addInList和addFisrt方法使得可以将元素插入到链表中的第五位和首位,新写入了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软件结构与数据结构》实验一报告的更多相关文章
- 20172328 2018—2019《Java软件结构与数据结构》第二周学习总结
20172328 2018-2019<Java软件结构与数据结构>第二周学习总结 概述 Generalization 本周学习了第三章集合概述--栈和第四章链式结构--栈.主要讨论了集合以 ...
- 20172302 《Java软件结构与数据结构》实验三:查找与排序实验报告
课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月19日 必修/选修: 必修 实验内容 (1) ...
- 20172302 《Java软件结构与数据结构》实验二:树实验报告
课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月5日 必修/选修: 必修 实验内容 (1)参 ...
- 20172302 《Java软件结构与数据结构》实验一:线性结构实验报告
课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年9月26日 必修/选修: 必修 实验内容 (1)链 ...
- 20172301 《Java软件结构与数据结构》实验三报告
20172301 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...
- 20172301 《Java软件结构与数据结构》实验二报告
20172301 <Java软件结构与数据结构>实验二报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...
- 20172329 2018-2019 《Java软件结构与数据结构》实验三报告
20172329 2018-2019-2 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...
- 20172329 2018-2019-2 《Java软件结构与数据结构》实验二报告
20172329 2018-2019-2 <Java软件结构与数据结构>实验二报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...
- 20172301 《Java软件结构与数据结构》实验一报告
20172301 <Java软件结构与数据结构>实验一报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...
随机推荐
- ubuntu 16.04(Windows 10双系统+grub引导)无法进入tt1~tt6(NVIDIA驱动安装相关-黑屏,login loop,分辨率)
目录 前言回顾 最终解决: 0.关闭x服务 1.禁用nouveau 2.加入 3.更新 4.查找匹配驱动 5.选择推荐版本 6.等待安装后重启,nvidia-smi查看是否安装成功,或者lsmod | ...
- 19-3-14Python中函数的进阶
1.动态参数: def func(*args): #在形参位置*叫做聚合 print(args) #元组形式 func(1,2,3,4,5,6) def func(**kwargs): # 动态关键字 ...
- Linux基础入门 第一章:Linux环境搭建——Redhat 6.4图文安装教程
1.创建新的虚拟机 2.选择自定义 3.选择Workstation 10.0 4.选择稍后安装操作系统 5.选择Red Hat 6 64位 6.对虚拟机命名和选择安装位置 7.选择处理器配置 8.选择 ...
- Mysql修改密码以及权限问题
mysql修改密码小步骤 错误分析: 一开始是密码错误导致,先添加skip-grant-tables(这个配置无视权限的,添加直接回车登录即可),尽心修改密码,发现错误照旧 百度了一下,发现是mysq ...
- CTF-安恒19年二月月赛部分writeup
CTF-安恒19年二月月赛部分writeup MISC1-来玩个游戏吧 题目: 第一关,一眼可以看出是盲文,之前做过类似题目 拿到在线网站解一下 ??41402abc4b2a76b9719d91101 ...
- 论 Python Opencv 中文路径及中文文件名图像文件读取的两种方式
python 2中对于中文字符的处理可谓是诟病已久,虽然python 3 使用统一编码解决了中文字符串的问题,但在使用opencv中imread函数读取中文路径图像文件时仍会报错. 1) 借助nump ...
- 自己第一次使用ANTLR遇到的问题
觉得既然是第一次尝试ANTLR嘛,那就来个简单点的,parse Windows 的 hosts 文件吧,结果...... 先上一段 grammar: grammar hosts; hostfile: ...
- Oracle入门第三天(上)——多表查询与分组函数
一.多表查询 所有的连接分析,参考之前随笔:http://www.cnblogs.com/jiangbei/p/7420136.html 1.笛卡尔积 select last_name, depart ...
- 20155210潘滢昊 2016-2017-2 《Java程序设计》第2周学习总结
20155210潘滢昊 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 %%:表示字符串中的%. %d:以十进制整数格式输出 %f:以十进制浮点式格式输出 % ...
- 单线程的redis为什么吞吐量可以这么大
原文:单线程的redis为什么吞吐量可以这么大 一.Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快: 2.redis是单线程的,省去了很多上下文切换线程的时间: 3.r ...