实践出真知-所谓"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了。
没什么话要说了,来不及了,有可爱的电商选修。