java - 单元格和指针变量

标签 java pointers

class Cell<T> {
    T first;
    Cell<T> next;
    Cell(T f,Cell<T> n) {
       first=f;
       next=n;
    }
}

假设我们有三个变量 ls1、ls2 和 ptr,类型为 Cell<Character>下面的单元格和指针图给出了初始情况: enter image description here

绘制代表以下几行之后情况的单元格和指针图 代码已执行:

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/

相关文章:

java - 重载方法的切入点

C++ 返回空指针

c - 指针到指针和链表,按值传递参数

在函数中更改指针的值

java - Mockito - 0 个预期匹配器,2 个已记录 (InvalidUseOfMatchersException)

java - Libgdx 无需 TiledMap 创建快速 map

c - 使用 strcpy 时如何将空终止符添加到 char 指针

c++ - .net c++/cli 获取指针的内容

java - 将 java 属性传递给 scala - nosuchmethod 错误

java - JDK 6 是否支持 XPath 2.0 的所有特性?