• 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.其它

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

    参考资料

  • 相关阅读:
    编写OracleMembershipProvider,让SharePoint2007使用Oralce中的用户数据实现Form验证。 (第三天)
    学习《Building Applications with FME Objects》 之一 关于FME Objects
    我们在这里期待~~
    用python写fme数据转换脚本
    学习《Building Applications with FME Objects》 之七 坐标系统
    菜鸟笔记Linq初学 top(2)
    菜鸟笔记Linq初学 top(1)
    Sqlserver2008R2搭建本地服务器
    Python3之列表、元组和购物车程序练习
    Python3之字符串
  • 原文地址:https://www.cnblogs.com/Tempo-Alex/p/13931097.html
Copyright © 2020-2023  润新知