zoukankan      html  css  js  c++  java
  • 20192317邓子彦 实验六 《数据结构与面向对象程序设计》实验报告

    20192317邓子彦 实验六 《数据结构与面向对象程序设计》实验报告

    课程:《程序设计与数据结构》

    班级: 1923

    姓名: 邓子彦

    学号:20192317

    实验教师:王志强

    实验日期:2020年11月5日

    必修/选修: 必修

    1. 实验内容

    1.链表练习,要求实现下列功能:
    通过键盘输入一些整数,建立一个链表;这些数是你学号中依次取出的两位数,再加上今天的时间。打印所有链表元素, 并输出元素的总数。
    在你的程序中,请用一个特殊变量名来纪录元素的总数,变量名就是你的名字。做完这一步,把你的程序签入源代码控制(git push)。

    2.链表练习,要求实现下列功能:
    实现节点插入、删除、输出操作;继续你上一个程序,扩展它的功能,每做完一个新功能,或者写了超过10行新代码,就签入代码,提交到源代码服务器;从磁盘读取一个文件,这个文件有两个数字。从文件中读入数字1,插入到链表第 5位,并打印所有数字,和元素的总数。保留这个链表,继续下面的操作。从文件中读入数字2,插入到链表第0位,并打印所有数字,和元素的总数。保留这个链表,并继续下面的操作。从链表中删除刚才的数字1,并打印所有数字和元素的总数。

    3.链表练习,要求实现下列功能:
    使用冒泡排序法或者选择排序法根据数值大小对链表进行排序;如果你学号是单数, 选择冒泡排序,否则选择选择排序。在排序的每一个轮次中,打印元素的总数,和目前链表的所有元素。

    2. 实验过程及结果

    一、实验一

    • 1.实验代码
    public abstract class test {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            LinkedList site = new LinkedList();
            int nDengZiYan = 0;
            for(int i = 0;i < 11;i++){
                site.add(in.nextInt());
            }
            System.out.println(site);
            System.out.println("The LinkedList has " + site.size() +" numbers");
    }        
    
    • 2.运行截图

    • 二、实验二

    • 1.实验代码

    public abstract class test {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            LinkedList site = new LinkedList();
            int nDengZiYan = 0;
            for(int i = 0;i < 11;i++){
                site.add(in.nextInt());
            }
            System.out.println(site);
            System.out.println("The LinkedList has " + site.size() +" numbers");
    
            BufferedReader br1 = null;
    
    
            try {
                String Line1,Line2;
                br1 = new BufferedReader(new FileReader("D:\ExperimentLinkedList\src\number.txt"));
                System.out.println("读取第一个文本");
                Line1 = br1.readLine();
                Line2 = br1.readLine();
                System.out.println(Line1);
                site.add(5,Integer.parseInt(Line1));
                System.out.println(site);
                System.out.println("链表长度为:"+site.size());
                System.out.println("读取第二个文本");
                site.addFirst(Integer.parseInt(Line2));
                System.out.println(Line2);
                System.out.println(site);
                System.out.println("链表长度为:"+site.size());
            }catch (IOException ioe){
                ioe.printStackTrace();
            }
    }        
    
    • 2.运行截图

    • 三、实验三

    • 1.实验代码

    //冒泡排序法
    public abstract class test {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            LinkedList site = new LinkedList();
            int nDengZiYan = 0;
            for(int i = 0;i < 11;i++){
                site.add(in.nextInt());
            }
            System.out.println(site);
            System.out.println("The LinkedList has " + site.size() +" numbers");
    
            BufferedReader br1 = null;
    
    
            try {
                String Line1,Line2;
                br1 = new BufferedReader(new FileReader("D:\ExperimentLinkedList\src\number.txt"));
                System.out.println("读取第一个文本");
                Line1 = br1.readLine();
                Line2 = br1.readLine();
                System.out.println(Line1);
                site.add(5,Integer.parseInt(Line1));
                System.out.println(site);
                System.out.println("链表长度为:"+site.size());
                System.out.println("读取第二个文本");
                site.addFirst(Integer.parseInt(Line2));
                System.out.println(Line2);
                System.out.println(site);
                System.out.println("链表长度为:"+site.size());
            }catch (IOException ioe){
                ioe.printStackTrace();
            }
    
            nDengZiYan = site.size();
            int temp;
            for ( int i = 1; i < nDengZiYan - 1; i++) {
                for (int j = 0; j < (nDengZiYan - i); j++) {
                    if ((int)site.get(j + 1) < (int)site.get(j)) {
                        site.add(j,site.get(j + 1));
                        site.remove(j+2);
                        System.out.println("链表的元素总数为:" +site.size());
                        System.out.println("链表的内容为:
    " +site);
                    }
                }
            }
        }
    }
    
    • 2.运行截图




    3. 实验过程中遇到的问题和解决过程

    • 问题1:刚开始做实验的时候还不太理解链表的含义,一开始不知道该如何下手。

    • 解决办法:上CSDN搜索JAVA链表的基本操作,有很多人发布关于链表的帖子,通过学习后我开始理解链表的结构和操作。

    • 问题2:进行实验三的时候,我对链表的理解还不够深入,想着通过比较然后直接将两个数交换,一直报错。

    • 解决办法:刚开始我的思路是把链表转成数组进行交换,可是过程过于繁琐,我去问同学该怎么操作。后面理解到了链表的节点含有两个引用,是不能直接交换的,判断两个节点内容大小时要强制转换类型成Int,然后通过插入节点和删除节点实现交换操作

    4. 实验体会

    • 这次实验前面的三个其实难度不是很大,但是后面的两个在安卓中实现难度却很高,我上网查了很多教程还是不太懂该如何在Android Studio中怎么实现实验一二三,害,可能自己还是不够努力,继续加油吧!
  • 相关阅读:
    C#使用 System.Net.Mail发送邮件功能
    移动H5前端性能优化指南
    chrome主页被篡改为hao123 win10系统
    jqGrid TreeGrid 加载数据 排序 扩展
    Dapper 链式查询 扩展
    T4 代码生成 Demo (抽奖程序)
    反射实现 Data To Model
    highcharts .net导出服务 和 两种导出方式
    jQuery 自定义插件 (分页控件)
    ajax 多级联动 下拉框 Demo
  • 原文地址:https://www.cnblogs.com/dengziyan/p/13956507.html
Copyright © 2011-2022 走看看