// 链表定义
public class DueueTest
{
private int value;
public DueueTest next;
public DueueTest(int value)
{
this.value = value;
next = null;
}
public DueueTest()
{
this.value = 0;
next = null;
}
public int getValue()
{
return this.value;
}
}
// 为什么 head 没有被赋值成功
public class Main
{
public static void main(String[] args)
{
int n = 5;
DueueTest curr = new DueueTest();
DueueTest head = new DueueTest();
System.out.println("请输入5个数据: ");
Scanner scr = new Scanner(System.in);
for(int i = 0; i < n; i++)
{
DueueTest point = new DueueTest(scr.nextInt());
if (i == 0)
{
head = point; // 这里没有被赋值
curr = point; // 这里被赋值成功
}
else
{
curr.next = point;
curr = curr.next; // 这里被赋值成功
}
}
curr = head; // 同样这里 curr 没有被赋值成功
curr = curr.next // 这里同样没赋值成功
}
}
head应该在第一次循环中被正确赋值了,但是由于它是一个对象的引用,后续操作会改变其指向的对象,导致后面的curr = head;和curr = curr.next;语句中的curr没有正确指向head。可能需要检查DueueTest类中的next属性是否正确初始化以及对其它引用进行正确的赋值操作
你这样写,一直写的都是同一个对象的,引用被覆盖了