20192319 2019-2020-1 《数据结构及面向对象程序设计》实验六报告

实验六报告

  • 课程:《程序设计与数据结构》
  • 班级: 1923
  • 姓名: 李歆韵
  • 学号:20192319
  • 实验教师:王志强
  • 实验日期:2020年11月5日
  • 必修/选修: 必修

1.实验内容

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

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

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

在android上实现实验(1)和(2)

在android平台上实现实验(3)

2.实验过程与结果

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

package LinkedList;

import java.util.*;
import java.io.*;

public class MyLinked_1 {
    public static Chain_1 head;
    public static int nLiXinyun = 0;
    public static Chain_1 reserve1;
    public static Chain_1 reserve2;

    public static void main(String[] args) throws IOException{
        Scanner a = new Scanner(System.in);
        String b;

        System.out.println("Please input number "+((nLiXinyun+1))+" or input \"over\": ");
        b = a.next();
        head= new Chain_1(Integer.parseInt(b));
        while(!b.equals("over")){
            nLiXinyun++;
            System.out.println("Please input number "+((nLiXinyun+1))+" or input \"over\": ");
            b = a.next();
            if (b.equals("over")){
                break;
            }
            Chain_1 temp = new Chain_1(Integer.parseInt(b));
            lianjie(head,temp);
        }
        System.out.println("The initial chain: "+shuchu(head));
        System.out.println("The amount of chain: "+nLiXinyun);
  }

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

public static void charu(Chain_1 head, int ele, int point){
        Chain_1 node = new Chain_1(ele);
        Chain_1 head3 = head;
        int n =0;
        if (point == 0){
            node.setNext(head);
            MyLinked_1.head = node;
        }

        else {
            while (n != point - 1) {
                head3 = head3.getNext();
                n++;
            }
            node.setNext(head3.getNext());
            head3.setNext(node);
        }
        nLiXinyun++;
    }

    public static void shanchu(Chain_1 head, int point){
        Chain_1 head4 = head;
        int n = 0;
        if (point == 0){
            MyLinked_1.head = head.getNext();
        }
        else {
            while (n != point - 1){
                head4=head4.getNext();
                n++;
            }
            head4.setNext(head4.getNext().getNext());
        }
        nLiXinyun--;
    }

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

public static void maopaopaixu(){
        Chain_1 temp = MyLinked_1.head;
        Chain_1 c1,c2;
        int i,j;
        if (temp == null || temp.getNext() == null){
            System.out.println(shuchu(head));
            System.out.println("The amount of chain: "+nLiXinyun);
        }
        for (i=1;i<nLiXinyun;i++){
            for (j=i+1;j<=nLiXinyun;j++){
                c1=c2=MyLinked_1.head;

                for (int x=1; x<i; x++){
                    c1 = c1.getNext();
                }
                for (int y=1; y<j; y++){
                    c2 = c2.getNext();
                }

                if (c1.getE1()<c2.getE1()){
                    int t;
                    t = c1.getE1();
                    c1.setE1(c2.getE1());
                    c2.setE1(t);
                }
            }
            System.out.println(shuchu(head));
            System.out.println("The amount of chain: "+nLiXinyun);
        }
    }

3.其它

链表的实践是本周新学习的内容,主要学习了插入,查找等一系列内容。新内容不断增加,希望老内容也不要遗忘

参考资料

posted on 2020-11-10 21:45  节奏阿莱士  阅读(88)  评论(0编辑  收藏  举报

导航