实践出真知-所谓"java没有指针",那叫做引用!

时间:2024-07-31 13:34:02

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

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

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

实践出真知-所谓"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)+" ");
}
}

实验结果:

实践出真知-所谓"java没有指针",那叫做引用!

觉得自己炒鸡棒!

其实最开始的结果是:

实践出真知-所谓"java没有指针",那叫做引用!

乱码了,为什么呢?

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

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

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

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

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

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

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