实验一:实验报告

课程:程序设计与数据结构
班级: 1623
姓名: 张旭升
学号:20162329
指导教师:娄嘉鹏 王志强
实验日期:9月25日

实验密级: 非密级
预习程度: 已预习

必修/选修: 必修
实验序号: cs_29

实验名称: Java线性表的应用,实现和分析

实验内容

1. Java中的线性表的测试:过程,问题

2. Java中的线性表的应用:过程,问题

3. 顺序表的实现(伪代码,产品代码,测试代码):过程(分析,设计,实现,测试),问题

4. 链表的实现(伪代码,产品代码,测试代码):过程(分析,设计,实现,测试),问题

5. Java ArrayList,LinkedList源码分析:过程,学到的技巧

实验要求


1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程

  1. 完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是 运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决 办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可 以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导

  2. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。


实验过程

一.Java中线性表的测试

1.MyList类:

Java中提供了两种线性表,分别是ArrayListLinkedList,我分别对它们每种类的其中三个主要方法进行了Junit单元测试:
ArrayList LinkedList
boolean : isEmpty() boolean : contains(Object o)
boolean : add(Object o) boolean : add(Object o)
Object : remove(int index) boolean : remove(Object o)

注意:

在测试中我发现,两种线性表在Java源代码中是受保护无法直接进行单元测试的,我只能自己写一个MyList来继承上面两个类,然后通过将需要测试的方法复写一下只需要调用父类的该方法就可以直接进行单元测试了。

2.测试结果及代码

测试代码

ArrayList测试代码
LinkedList测试代码

测试截图

二.用Java线性表实现有序线性表的合并

实现代码

  • 实现代码
  • 测试代码

    测试截图

三.用数组实现线性表

1.实现代码分析:


创建数组线性表的思路和课上的Bag类是很类似的,具体做法也是在Bag类的基础上进行了一些功能的改进,比如实现了存储空间的自增长等

思路:

在每次往数组中线性的添加元素时都会进行一个判断,如果数组已经没有空位时,就会进行一个变换的操作,新建一个多10位的数组(数组初始大小为10)然后将原数组中的元素遍历出来放入新建数组,然后将新建数组赋给原数组的引用,即使数组长度增加了10

2.实现代码及测试

  • 实现代码
  • 测试代码

3.测试截图

四.用链表实现线性表

1.实现代码分析:

定义一个链表的类,然后在类中创建两个变量,一个为泛型变量,一个是该类的对象,这个类的对象将会作为一个指针,在链表中每创建一个新的元素时,就会> > 实将指针实例化。

2.实现代码及测试代码

  • 实现代码
  • 测试代码

3.测试截图

五.ArrayList与LinkedList源码分析

1.源码调取

我所分析的源码是从IDEA中直接调取的,具体操作是在IDEA中连按两次Shift键就会弹出一个搜索框,然后在搜索框中分别搜索ArrayList和LinkedList就可以调出 这两个类的源代码

2.源码分析

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

参考资料:
java集合框架05——ArrayList和LinkedList的区别
Java中ArrayList和LinkedList区别

转载于:https://www.cnblogs.com/Zhangxusheng/p/7612731.html

2017—2018 实验报告:实验一相关推荐

  1. Java程序设计实验报告 实验名称:循环和数组

    Java程序设计实验报告 实验名称:循环和数组 学号: 姓名:大聪TI学员 实验日期:2018年5月30日星期三 一.实验目的: 1. 遵循循环设计策略来开发循环,使用标记值控制循环. 2. 使用fo ...

  2. C语言数据结构线性表上机实验报告,数据结构实验报告实验一线性表_图文

    数据结构实验报告实验一线性表_图文 更新时间:2017/2/11 1:23:00  浏览量:763  手机版 数据结构实验报告 实验名称: 实验一 线性表 学生姓名: 班 级: 班内序号: 学 号: ...

  3. 计算机网络数据分析报告,贵州大学计算机网络实验报告-实验四-分析IP协议数据包格式...

    贵州大学计算机网络实验报告-实验四-分析IP协议数据包格式 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 贵州大学GUIZHOU UN ...

  4. linux内核态real cred,Linux内核实验报告——实验5.doc

    Linux内核实验报告 实验题目:新系统调用设计实验 实验目的: 系统调用是内核提供给用户应用程序使用的内核函数名,这些函数提供了内核为用户 应用程序所提供的系统服务功能.这些函数在用户应用程序中的书 ...

  5. java程序设计教程实验报告_java程序设计课程--实验报告-实验13.doc

    java程序设计课程--实验报告-实验13.doc 还剩 12页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: ...

  6. c语言实验四报告,湖北理工学院14本科C语言实验报告实验四数组

    湖北理工学院14本科C语言实验报告实验四 数组.doc 实验四 数 组实验课程名C语言程序设计专业班级 14电气工程2班 学号 201440210237 姓名 熊帆 实验时间 5.12-5.26 实验 ...

  7. 虚拟实验工场大学计算机实验报告答案,虚拟实验实验报告 - 实验报告 - 书业网.doc...

    虚拟实验实验报告 - 实验报告 - 书业网 虚拟实验实验报告 - 实验报告 - 书业网 篇一:虚拟实验报告 第一章 文献综述 1.1 丙酮酸脱氢酶概述 丙酮酸脱氢酶复合体(Pyruvate Dehyd ...

  8. 苏州大学实验报告模板C语言,苏州大学实验报告-实验flash在线编程实验

    1.实验Flash在线编程实验一实验目的1进一步熟悉MT-IDE嵌入式开发系统环境.汇编.C语言.调试方式.2进一步学习SCI通信的内容.3掌握Flash存储器在线编程的基本概念.4熟悉GP32芯片F ...

  9. c语言实验题水仙花数5359,《C语言程序设计》实验报告(实验1-12).doc

    <C语言程序设计>实验报告(实验1-12).doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会 ...

  10. 大学计算机张青答案,《大学计算机Ⅰ》实验报告实验一1

    <大学计算机Ⅰ>实验报告实验一1 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 广东金融学院实验报告课程名称:大学计算机I ...

最新文章

  1. Nuget很慢,我们该怎么办
  2. servlet类中@WebServlet 报错,不变色
  3. ubuntu安装-Caffe依赖
  4. 机器学习入门系列(1)--机器学习概览(上)
  5. B. One Bomb (#363 Div.2)
  6. Spring Data JPA 从入门到精通~EntityManager介绍
  7. java中线程观察者模式_设计模式之--观察者模式
  8. 语言 泰克示波器程序_示波器再升级,EMI测试不求人
  9. 计算机历史人物-随笔
  10. Linux下 中日文输入法安装简介
  11. RFID应急物资管理系统
  12. 富士施乐3065扫描教程_富士施乐打印机3065怎么连接电脑扫描
  13. 申请软件著作权有哪些好处,你知道吗?
  14. 自动排单功能的一些思考
  15. Java基础笔记(初学者适用)
  16. X1Tablet键盘改造成USB键盘
  17. 绝地求生计算机内存不足怎么解决,绝地求生大逃杀虚拟内存不足怎么解决 虚拟内存设置教程...
  18. 如何删除PDF空白签名域?
  19. 计算机用户与权限如何设置密码,如何设置电脑用户权限_如何设置电脑使用时间...
  20. Python 读取Excel地点名称通过百度地图获取行政区划信息

热门文章

  1. php把时间戳转换成字符串,php中将时间差转换为字符串提示的实现代码
  2. GPU Gems1 - 18 空间BRDF(Spatial BRDFs)
  3. java基础之HashTable和HashMap的区别
  4. 文件重命名批量处理(Matlab)
  5. zbb20171215 git 版本回退
  6. 关于拓扑排序的问题-P3116 [USACO15JAN]会议时间Meeting Time
  7. httpClient实现微信公众号消息群发
  8. 流程图制作在云上 https://www.processon.com/
  9. R--线性回归诊断(一)
  10. 使用logminer分析日志文件