zoukankan      html  css  js  c++  java
  • 20162309《程序设计与设计结构》第一次实验报告

    实验名称:线性结构实验
    实验日期:2017.9.22
    实验人员:20162309邢天岳(结对同学20162313苑洪铭)
    实验目的:学习和理解ArrayList和LinkedList,了解两种链表的别与联系,以及在分析数据时两种链表的优劣。使用Junit方法对两种链表进行测试,同时学习有序线性表的合并,对两个相同增减性的有序线性表进行泛型类的合并测试。
    实验三、四分别要用数组和链表实现List,并进行测试。并总结线性结构。
    指导老师:娄老师、王老师

    实验具体过程:本次实验是学习有关线性结构的内容,共分为五个部分,分别从不同的方面考察对线性表、链表及数组的理解程度。实验1需要参考java API文档,分别满足ArrayList的相应功能,其中包括测试add、remove、isEmpty等功能进行测试,同时需要覆盖正常情况,异常情况,边界情况,并进行泛型测试。
    API文档里存在相关代码可以很好的验证不同情况下ArrayList的功能。
    实验2需要合并两个有序线性表,并且在合并前后的增减性不变。
    我和结对伙伴所编写的代码使用的是while循环语句,在编译运行成功后,想要将其调整为for循环语句,但并没有调整成功,这里就需要辨析两种循环的差别,控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率 ,由于在这个程序中,无法确定循环层数,则无法改变循环语句。同时在这个实验的git上传过程中再次出现了一个问题,通过命令行上传时的检测,文件名上传时需要与主类名一致。

    实验3需要用数组来实现list的几个基本的方法为了能够快速实现方法,将装有Listt方法的BagInterface接口给实现,这里就应用到了泛型的知识点。在前次的实验中,我们测试了泛型的bag类,在这里可以参考以前的bag类方法。



    方法如下:public boolean add(T newEntry) {
    boolean a = false;
    for (int i = 0;i < arry.length;i++){
    if (arry[i] == null){
    arry[i] = (Object) newEntry;
    a = true;
    break;
    }
    实验4和实验3有很多相似的地方,分别是用数组和链表进行实验,使用LinkedList可以获得更多的简便之处,但要分析好LinkedList的使用方法,LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的LinkedList的构造函数如下

    1. public LinkedList():  ——生成空的链表
    2. public LinkedList(Collection col):  复制构造函数
      编写一个简单的程序来描述LinkedList的工作方法:
      import java.util.LinkedList;  
        
      public class LinkedListTest{  
        public static void main(String[] args) {  
          LinkedList lList = new LinkedList();  
          lList.add("1");  
          lList.add("2");  
          lList.add("3");  
          lList.add("4");  
          lList.add("5");  
        
        
          System.out.println("链表的第一个元素是 : " + lList.getFirst());  
          System.out.println("链表最后一个元素是 : " + lList.getLast());  
        }  
      }  
      这个程序可以获取链表的第一个和最后一个元素。除此之外,LinkedList还可以添加元素,添加单个元素 如果不指定索引的话,元素将被添加到链表的最后.public boolean add(Object element):
      public boolean add(int index, Object element)
      也可以把链表当初栈或者队列来处理:
      public boolean addFirst(Object element)
      public boolean addLast(Object element)
      addLast()方法和不带索引的add()方法实现的效果一样.

    LinkedList的私有方法:

    本次实验是对线性表以及线性结构的学习和理解,同时也考察了泛型和java源代码,而对于java源代码,最大的特点就是简洁明了,用最少的代码来完成编译,极大地减少了出错的可能性,将方法进行拆分,又一个一个的小方法来组合成一个一个的程序。

  • 相关阅读:
    XML-SAX
    aio-epoll
    aio-java
    设计模式-策略模式、命令模式
    java-io一
    计算机网络-tcp的可靠性
    计算机网络-tcp简介
    设计模式-单例模式、工厂模式
    Cookie和Session简述
    mysql-优化二
  • 原文地址:https://www.cnblogs.com/Metwox/p/7616996.html
Copyright © 2011-2022 走看看