2017—2018 实验报告:实验一

实验一:实验报告

课程:程序设计与数据结构
班级: 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单元测试:
ArrayListLinkedList
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测试代码

测试截图

1065476-20170929210015965-2079493286.png

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

实现代码

  • 实现代码
  • 测试代码

    测试截图

    1065476-20170929212710622-1030956481.png

三.用数组实现线性表

1.实现代码分析:


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

思路:

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

2.实现代码及测试

  • 实现代码
  • 测试代码

3.测试截图

1065476-20171008155453918-1571786969.png

四.用链表实现线性表

1.实现代码分析:

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

2.实现代码及测试代码

  • 实现代码
  • 测试代码

3.测试截图1065476-20171008161025637-515268610.png

五.ArrayList与LinkedList源码分析

1.源码调取

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

2.源码分析

1065476-20171008163718106-518910473.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

病床呼叫系统有显示屏c语言,病床呼叫系统毕业设计

内容介绍完整版大学病床呼叫系统毕业设计,已修改完格式摘 要医院已经从人工管理模式向智能化方向发展。“病床呼叫系统”可以实现对病房的智能化管理,可实现呼叫、求救警报、信息存储、显示等等功能。患者在住院期间,可能会在任意时间请求医…

1. mybatis批量插入数据

通过list <insert id"saveByList" useGeneratedKeys"true" parameterType"java.util.List"> insert into T_App_Default_User(UserID,AppType,CreateTime)values <foreach collection"list" item"item" index&quo…

iOS开发 - Swift实现清除缓存功能

前言: 开发移动应用时&#xff0c;请求网络资源是再常见不过的功能。如果每次都去请求&#xff0c;不但浪费时间&#xff0c;用户体验也会变差&#xff0c;所以移动应用都会做离线缓存处理&#xff0c;其中已图片缓存最为常见。 但是时间长了&#xff0c;离线缓存会占用大量的…

c语言结构体单元测试,C语言结构体单元练习.doc

C语言结构体单元练习1.有以下定义和语句&#xff1a;struct student{ int age;int num; };struct student stu[3]{{1001,20},{1002,19},{1003,21}};main(){ struct student *p;pstu;…… }则以下不正确的引用是 。A) (p)->num B) p C) (*p).num D) p&stu.age2.有以下结构…

如何开启IIS7以上的“IIS6管理兼容性”

护卫神PHP套件的安装&#xff0c;需要开启“IIS6管理兼容性”&#xff0c; 那么&#xff0c;如何开启IIS7、IIS7.5、IIS8.0的IIS6兼容模式呢&#xff1f; 设置的时候&#xff0c;请参照如下截图&#xff1a; 本文转自黄聪博客园博客&#xff0c;原文链接&#xff1a;http://www…

pop to 特定的UIViewController

1. 我们可以推出到特定的UIViewController 2. 有一个类没有navigationController&#xff0c;以前一般用delegate&#xff0c;我觉得我们可以把引用一个navigationController&#xff0c;然后使用它来推出另一个UIViewController转载于:https://www.cnblogs.com/studyNT/p/4486…

蓝桥杯:矩阵翻硬币

题目地址&#xff1a;http://lx.lanqiao.org/problem.page?gpidT126 这道题强烈建议用java做&#xff0c;毕竟自带BigInteger类。 此题看似是一道模拟题&#xff0c;但由于数据规模很大&#xff08;10的1000次方&#xff09;&#xff0c;只能找规律。规律是最终结果为sqrt(n)*…

ssh服务端口转发详解

端口转发的概念和应用什么是端口转发呢&#xff0c;我们知道&#xff0c;SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是&#xff0c;SSH 还同时提供了一个非常有用的功能&#xff0c;这就是端口转发。它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发&…

W ndoWs文件夹窗口,如何在本地网络中访问-Synology-NAS-上的文件-(Wndows).pdf

如何在本地网络中访问-Synology-NAS-上的文件-(Wndows)如何在本地网络中访问 Synology NAS 上的文件 (Windows)概述Synology NAS 经过专门设计&#xff0c;可快速简单地在本地网络中存储和共享文件&#xff0c;让您直接访问 SynologyNAS 上的文件而没有每次登录 DSM 的麻烦。例…

左移与右移

左移 无论被移动的数是有符号还是无符号&#xff0c;左移一位相当于乘2(在不溢出的情形下) 右移 对于无符号数&#xff0c;右移一位相当于除以2&#xff1b; 对于有符号数&#xff0c;如果还想获得同样右移除以2的效果&#xff0c;就要考虑算数右移&#xff0c;即符号位始终不变…

Serializing Lua objects into Lua Code

The following little snippet allows you to ‘pickle’ Lua objects directly into Lua code (with the exception of functions, which are serialized as raw bytecode). Metatable support is on the way, but for now, it should be useful enough. Example code: view s…

布局管理器android,Android课程---布局管理器之相对布局(一)

下面示例的是在父容器里如何设置按钮的位置&#xff0c;难度&#xff1a;***&#xff0c;重点是找到一个主按钮&#xff0c;设置它的id&#xff0c;然后根据它来设置其他按钮在父容器的位置。代码示例&#xff1a;android:layout_width"match_parent"android:layout_…

【Cocos2d-Js基础教学 入门目录】

本教程视地址频在&#xff1a;九秒课堂 完全免费从接触Cocos2dx-Js以来&#xff0c;它的绽放的绚丽让我无法不对它喜欢。我觉得Js在不断带给我们惊喜&#xff1b;在开发过程中&#xff0c;会大大提升我们对原型开发的利用率&#xff0c;使用Js语言做游戏开发&#xff0c;使游戏…

Hammer.js移动端触屏框架的使用

hammer.js是一个多点触摸手势库&#xff0c;能够为网页加入Tap、Double Tap、Swipe、Hold、Pinch、Drag等多点触摸事件&#xff0c;免去自己监听底层touchstart、touchmove、touchend事件并且写一大堆判断逻辑的痛苦。hammer.js不但支持触摸屏设备的浏览器&#xff0c;在桌面浏…

Android实现笔记本修改功能,安卓12第二个开发者预览版推出:UI、功能有所改进...

最近谷歌正式推出了Android 12的第二个开发者预览版&#xff0c;带来了很多UI和功能上的改进。首先最明显的变化应该是锁屏界面和下拉通知栏的音乐播放器。此前这部分UI的配色一直采用的是音乐专辑的主色调&#xff0c;但在Android 12上&#xff0c;这个配色变成了系统的强调色…

Delphi编译报错对照表

; not allowed before ‘ELSE’ → ElSE前不允许有“;” ” clause not allowed in OLE automation section → 在OLE自动区段不允许“”子句 ” is not a type identifier → 不是类型标识符 ” not previously declared as a PROPERTY → 前面没有说明PROPERTY ‘GOTO ‘ lea…

C语言中Union类型的使用方法

转自&#xff1a;http://blog.csdn.net/feimor/article/details/6858103 使用C语言时&#xff0c;常常使用struct&#xff0c;对于union类型却几乎没有用过&#xff0c;只知道它是联合类型&#xff0c;各字段共享一块内存&#xff0c;实际应用中却不知道它的具体用途。 今天读《…

android 点对点语音,使用Android SIP Stack进行点对点SIP呼叫?

我一直被困在同样的问题上.如果你可以在没有android sip api的情况下制作它,你可以查看rtp api,它为你提供了一些较低级别的工具来制作P2P VOIP应用程序,而无需服务器.To support audio conferencing and similar usages, you need toinstantiate two classes as endpoints for…

拓扑排序

用两种方式来实现 1、 深度优先搜索&#xff08;DFS&#xff09; 对有向图采取深度优先搜索&#xff0c;并且在postVist处&#xff0c;打印所访问的节点。最后打印出的字符序列的反序列正好满足拓扑排序。&#xff08;可以在postVist&#xff08;&#xff09;方法中&#xff0c…

阿里启动NASA计划创造新经济核心科技

本文讲的是阿里启动"NASA"计划创造新经济核心科技【IT168 资讯】2017年3月9日&#xff0c;阿里巴巴集团在杭州召开首届技术大会&#xff0c;动员全球两万多名科学家和工程师投身“新技术战略”。会议透露&#xff0c;阿里巴巴正在启动一项代号“NASA”的计划&#xf…