zoukankan      html  css  js  c++  java
  • 20192320杨坤java实验报告6

    《数据结构与面向对象程序设计》实验五报告

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

    班级: 1923

    姓名: 杨坤

    学号:20192320

    实验教师:王自强

    实验日期:2020年11月5日

    必修/选修: 必修

    1.实验内容

    1.链表练习,要求实现下列功能:

    通过键盘输入一些整数,建立一个链表;

    这些数是你学号中依次取出的两位数。 再加上今天的时间。

    例如你的学号是 20172301

    今天时间是 2018/10/1, 16:23:49秒

    数字就是

    20, 17,23,1, 20, 18,10,1,16,23,49

    打印所有链表元素, 并输出元素的总数。

    在你的程序中,请用一个特殊变量名来纪录元素的总数,变量名就是你的名字。

    例如你叫 张三, 那么这个变量名就是

    int nZhangSan = 0; //初始化为 0.

    做完这一步,把你的程序签入源代码控制(git push)。

    2.链表练习,要求实现下列功能:

    实现节点插入、删除、输出操作;

    继续你上一个程序, 扩展它的功能,每做完一个新功能,或者写了超过10行新代码,就签入代码,提交到源代码服务器;

    从磁盘读取一个文件, 这个文件有两个数字。

    从文件中读入数字1, 插入到链表第 5 位,并打印所有数字,和元素的总数。 保留这个链表,继续下面的操作。

    从文件中读入数字2, 插入到链表第 0 位,并打印所有数字,和元素的总数。

    保留这个链表,并继续下面的操作。

    从链表中删除刚才的数字1. 并打印所有数字和元素的总数。

    3.链表练习,要求实现下列功能:

    使用冒泡排序法或者选择排序法根据数值大小对链表进行排序;

    如果你学号是单数, 选择冒泡排序, 否则选择选择排序。

    在排序的每一个轮次中, 打印元素的总数,和目前链表的所有元素。

    在(2)得到的程序中继续扩展,

    用同一个程序文件,写不同的函数来实现这个功能。 仍然用 nZhangSan (你的名字)来表示元素的总数。

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

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

    代码:

    package Chapter14;
    
    public class nodeList {
        int num;
        private nodeList head=null;
        private nodeList current;
        protected nodeList next;
        int size;
    
        public nodeList(int num) {
            this.num = num;
        }
    
        public int getSize() {
            return size;
        }
    
        public void setSize(int size) {
            this.size = size;
        }
    
        public int getNum() {
            return num;
        }
    
        public void setNum(int num) {
            this.num = num;
        }
        //增加链表
        public void addList(int d )
        {
            nodeList node=new nodeList(d);
            if(this.head==null)
            {this.head=node;
                return;}
            else{
                current=head;
            while (current.next!=null)
                current=current.next;
            }
            current.next=node;
    
        }
        //删除数据
        public boolean deleteNode(int index)
        {
           if(index<1||index>length())
           {
               return false;
           }
           if(index==1)
               head=head.next;
           int i=1;
           nodeList preNode=head;
           nodeList curNode=head.next;
           while (curNode!=null)
           {
               if(i==index-1)
               {
                   preNode.next=curNode.next;
                   return true;
               }
               preNode=curNode;
               curNode=curNode.next;
               i++;
           }
           return false;
    
        }
        //链表的长度
        public int length()
        {
            int length=0;
            nodeList tmp=head;
            while (tmp!=null)
            {
                tmp=tmp.next;
                length++;
            }
            return length;
        }
        //输出链表
        public void printlnList()
        {
            nodeList tmp=head;
            while (tmp!=null)
            {
                System.out.println(tmp.num);
                tmp=tmp.next;
            }
        }
        //插入数据
        public void addIndexNode(int num,int index)
        {
            nodeList preNode=head;
            nodeList curNode=head.next;
            nodeList node=new nodeList(num);
            int i=1;
    
            if (index==0)
            {
                head=node;
                node.next=preNode;
    
            }
            while (curNode!=null)
            {
                if(i==index-1)
                {
                    preNode.next=node;
                    node.next=curNode;
                }
                preNode=curNode;
                curNode=curNode.next;
                i++;
            }
        }
        //删除数据
        public void deleNumNode(int num)
        {
            nodeList preNode=head;
            nodeList curNode=head;
            while (curNode!=null)
            {
                if(curNode.num==num)
                {
                    preNode.next=curNode.next;
                }
                preNode=curNode;
                curNode=curNode.next;
            }
        }
        //按位置输出链表中的元素
        public  int nodePrintNum(int index)
        {
            nodeList curNode=head;
            int i=1;
            int num=0;
            while (curNode.next!=null)
            {
                if(i==index)
                num=curNode.num;
                curNode=curNode.next;
                i++;
            }
            return num;
        }
    
    
    
        //选择排序
        public void selectSortNode()
        {
    
    
           nodeList nextNode=null;
           nodeList curNode=head;
           nextNode=curNode.next;
           int tmp;
           int i=1;
            while (curNode.next != null) {
                nextNode = curNode.next;
                while (nextNode != null) {
                    if (curNode.num > nextNode.num) {
                        tmp = curNode.num;
                        curNode.num = nextNode.num;
                        nextNode.num = tmp;
                    }
    
    
                    nextNode = nextNode.next;
                }
                System.out.println("第"+i+"次排序");
                this.printlnList();
                System.out.println("===");
                System.out.println("元素总数"+this.length());
                curNode = curNode.next;
                i++;
            }
    
        }
    
    
    
    
        }
    

    测试代码:

    package Chapter14;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.util.Scanner;
    
    public class nodeListTest {
        public static void main(String[] args) throws Exception {
            nodeList list=new nodeList(0);
            int num=0;
            Scanner scanner=new Scanner(System.in);
            num=scanner.nextInt();
           while (num!=-1)
           {
    
               list.addList(num);
               num=scanner.nextInt();
           }
            System.out.println("操作后");
            list.printlnList();
            System.out.println("==================");
            System.out.println(list.length());
            System.out.println("==================");
    /*        File file=new File("D:\java的截图\test6.txt");
            InputStream in=new FileInputStream(file);
            byte[] b=new byte[1024];
            int count =0;
            int temp=0;
            while((temp=in.read())!=(-1)){
                b[count++]=(byte)temp;
            }
            in.close();
            list.addIndexNode(b[0]-48,5);
            System.out.println("数字1操作后");
            list.printlnList();
            System.out.println();
            list.addIndexNode(b[2]-48,0);
            System.out.println("数字2操作后");
            list.printlnList();
            System.out.println();
            list.deleNumNode(b[0]-48);
            System.out.println("链表:");
            list.printlnList();*/
            System.out.println("======================");
            System.out.println(list.length());
            list.selectSortNode();
            System.out.println("操作后的链表");
            list.printlnList();
            System.out.println("------------");
    
    
    
    
    
    
    
    
    
    }}
    



    2.实验心得体会

    自身的自学能力还要提升,大多数的实验代码都在同学的帮助下完成,在运到困难时,容易感到沮丧,还要多锻炼自己。平时也要多加练习。
    这是一个新的软件,一切都是陌生的,在遇到这种问题的时候,多上网搜集资料是非常必要的,同时多家运用学习的app在上面观看相关的视频能够更好的掌握

  • 相关阅读:
    【Flutter 实战】1.20版本更新及新增组件
    【Flutter 实战】各种各样形状的组件
    【Flutter 实战】全局点击空白处隐藏键盘
    Flutter —布局系统概述
    【Flutter 实战】17篇动画系列文章带你走进自定义动画
    lvs负载简介,原理,常见使用案例及Keepalived高可用
    02 . MongoDB复制集,分片集,备份与恢复
    Go之Casbin简介,安装,模型,存储,函数
    govendor包管理及Go项目热加载
    教你三招快速文件批量重命名方法
  • 原文地址:https://www.cnblogs.com/yk20192320/p/13960981.html
Copyright © 2011-2022 走看看