实践出真知-所谓"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了。

 

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

 

posted @ 2017-03-09 18:44  陶雨洁  阅读(5026)  评论(0编辑  收藏  举报