class Cell<T> {
T first;
Cell<T> next;
Cell(T f,Cell<T> n) {
first=f;
next=n;
}
}
假设我们有三个变量 ls1、ls2 和 ptr,类型为 Cell<Character>
下面的单元格和指针图给出了初始情况:
绘制代表以下几行之后情况的单元格和指针图 代码已执行:
ls2.next.first='z';
ls1.next=ls1.next.next;
for(ptr=ls2; ptr!=null; ptr=ptr.next)
ls1 = new Cell(ptr.first,ls1);
尝试: 将第一行b更改为z后。 第二行后y更改为z。 但我不确定这是否正确或接下来会发生什么。
最佳答案
你对第一部分的看法是正确的。 ls2.next.first='z';
行会将您的列表更改为:
ls1 --> x --> y --> z --> c
ls2 --> a ---------^
您基本上可以更改单元格的值。
然后,第二行 ls1.next=ls1.next.next;
将丢弃第一个列表的 y 元素:
ls1 --> x --> z --> c
ls2 --> a ---^
然后你就有了一个 for 循环。在此循环中,您将运行 ls2 的所有元素,并在 ls1 的头部创建新元素,如下所示:
ls1 --> a --> x --> z --> c
ls2 --> a ---------^
ls1 --> z --> a --> x --> z --> c
ls2 --> a ---------------^
ls1 --> c --> z --> a --> x --> z --> c
ls2 --> a ---------------------^
请注意,当您创建这些新单元格时,您将它们的值(由于某种原因在代码中称为 first
)传递给构造函数,从而创建未连接的全新对象。
关于java - 单元格和指针变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30027924/