我的问题也许太简单了:也许这就是我未能找到书面答案的原因。 我想了解链表的构建方式,但有一件事我无法理解: 通常,当我创建某种类的对象时,我需要给它一个名称,如下所示:
cat kitten =new cat();
同时,当我这样做时,计算机会给它一个地址,例如 dfe@fggv3444。 当我想在某种方法中使用创建的对象时,我用我给它的名称来寻址它:在我们的例子中:“cat”。 逻辑是,如果我以相同的名称“cat”命名 2 个对象,计算机将不知道要访问哪个对象,或者可能同时访问两个对象。 现在的问题是: 当我们使用链表时,在整个程序中使用的节点数量变化很大。那么这个节点类类型的对象是如何获取它们的名称的呢?显然它们必须有一个名称,但我不在那里为每个节点命名......
它是如何工作的?!
提前致谢。 我确信这个问题中的某些内容一定很愚蠢,但无法弄清楚是什么。
最佳答案
每个cat
名称本质上(正如@Turing85在评论中指出的那样)只是一个人类可读格式的cat实例的内存地址。
链表的核心是一组节点,每个节点都有一个值
和下一个
节点(下一个
是变量连接节点以形成列表)。每只猫都被简单地称为node.value
,其中value
是指向节点猫的地址的“名称”。每个节点的 next
变量都指向下一个节点,该节点有自己的值
。
您不能在同一范围内将两个对象命名为相同的内容 - 您可以将 cat1
和 cat2
都指定为 cat
类型,每个都指向不同cat
的内存地址。链表可以做到这一点的原因是因为每个节点都有自己的范围,其他节点看不到。因此,所有节点都可以有一个 next
和一个 value
,称为 node.next
和 node.value
。
node1 +--------> node2 +--------> node3
+--------------+ | +--------------+ | +--------------+
| value = cat1*| | | value = cat2 | | | value = cat3 |
| next = node2-|---+ | next = node3-|---+ | next = null |
+--------------+ +--------------+ +--------------+
*---> cat1
+--------------+
| name = "tom" |
| col = "grey" | ...and likewise for the other nodes
| ............ |
关于java-链表,创建无名节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50804323/