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源代码,最大的特点就是简洁明了,用最少的代码来完成编译,极大地减少了出错的可能性,将方法进行拆分,又一个一个的小方法来组合成一个一个的程序。

  • 相关阅读:
    Linux 下的类似Windows下Everything的搜索工具
    windows和linux环境下制作U盘启动盘
    程序调试手段之gdb, vxworks shell
    LeetCode 1021. Remove Outermost Parentheses (删除最外层的括号)
    LeetCode 1047. Remove All Adjacent Duplicates In String (删除字符串中的所有相邻重复项)
    LeetCode 844. Backspace String Compare (比较含退格的字符串)
    LeetCode 860. Lemonade Change (柠檬水找零)
    LeetCode 1221. Split a String in Balanced Strings (分割平衡字符串)
    LeetCode 1046. Last Stone Weight (最后一块石头的重量 )
    LeetCode 746. Min Cost Climbing Stairs (使用最小花费爬楼梯)
  • 原文地址:https://www.cnblogs.com/Metwox/p/7616996.html
Copyright © 2011-2022 走看看