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了。
沒什么話要說了,來不及了,有可愛的電商選修。