zoukankan      html  css  js  c++  java
  • 实践出真知-所谓"java没有指针",那叫做引用!

    java没有指针,那我们如何实现动态数组呢?

    上篇评论提及 不仅有vector,还有ArrayList,还有List,可做选择“

    "java没有指针",那叫做引用!

    今天尝试了java单链表:

    Node.java

    package test;
    
    public class Node {
        Object data;
        Node next;
        public Node(Object data2, Node node) {
            this.data = data2;
            this.next = node;
        }
    }

    List.java

    package test;
    
    public class List {
        Node head;
        int size;
    
        public List() {
            head = new Node(0, null);
            size = 0;
        }
    
        public Node getLast() {
            Node node = head;
            while(node.next != null) {
                node = node.next;
            }
            return node;
        }
    
        public int insert(Object data) {
            Node last = getLast();
            Node node = new Node(data, null);
            last.next = node;
            size ++;
            return 1;
        }
    
        public void display() {
            System.out.println("size = " + size + "");
            Node temp = head.next;
            while(temp != null) {
                System.out.print(temp.data + " ");
                temp = temp.next;
            }
            System.out.println();
        }
    }

    Test.java

    package test;
    
    import java.util.Scanner;
    import java.util.Vector;
    
    public class Test{
        static  List list = new List();
        static Vector vector=new Vector();
            public static void main(String[] args) {
                list.insert('a');
                list.insert("1+1");
                list.insert(2);
                list.insert(3);
                list.insert(4);
                list.display();
                
                System.out.println(" ");
                Vector va=new Vector();//一维元素
                //将整个链表信息放在vector数组第一列
                for(int l=0;l<list.size;l++)//将出题加入vector数组以便打印
                {
                     va.add(list.head.next.data);
                     list.head=list.head.next;
                }
                 
               for(int i=0;i<va.size();i++)
                System.out.print(va.get(i)+" ");
            }
        }

    实验结果:

    觉得自己炒鸡棒!

    其实最开始的结果是:

    乱码了,为什么呢?

    原因是在for list的循环中,用了String,最后讲String导入vector数组,这样当然会乱码了,毕竟里面的元素都是Object滴。

    第二次运行也是错的,vector输出是 0 a 1+1 2 0,为什么呢?

    原因在于头结点只是一个头结点,没有任何数据。

    该程序实现了多类型元素动态链表。

    出人意料的是,昨天想的是,用vector来做每一题的内容存储;刚打开电脑想的是用vector二维数组吧一个存题目,一个存答案;写到刚刚,诶?怎么是单链表+vector二维数组的想法了,哈哈哈哈。

    其实也好,毕竟要加入括号,最后只需要在 for list中转换object并加入String,此次循环完之后,将得到的String作为题目存在二维数组中,并压入栈将所得结果也放在二维数组中就OK了。

    没什么话要说了,来不及了,有可爱的电商选修。

  • 相关阅读:
    管理者的主要任务是什么?
    管理者的最基本职责是什么?
    管理者的两大职责:“管事”和“理人”
    最近的思考
    刨根问底Objective-C Runtime
    Objective-C 中的类和对象
    ios动态添加属性的几种方法
    多态 oc c++ 与oc category
    利用Objective-C运行时hook函数的三种方法
    Hook技术
  • 原文地址:https://www.cnblogs.com/Amyheartxy/p/6527144.html
Copyright © 2011-2022 走看看