java中链表的基本实现是:
class Node{
int element;
Node next;
......
}
我不明白的是,在类本身内声明的类的对象如何能够存储另一个数据成员的地址。不声明Node接下来启用下一个本身有一个元素部分然后再次下一个。这会无限期地发生,对吧?那么,它是如何运作的?
答案 0 :(得分:1)
不声明Node接下来启用next自身有一个元素部分然后再次下一个。这会无限期地发生,对吧?
这就是这种数据结构的力量。您可以无限期地添加它,而不必像在静态数组中那样调整大小。
如果您想知道,如何结束清单?将Node next
设为null和中提琴!你有你的终端节点。
节点内的节点? 我可能错了,但是Java能够在同一个类中引用一个类实例,因为每个对象基本上都是一个知道其大小的指针。
C ++等价物
class A {
A *a;
}
答案 1 :(得分:0)
在Java中:
1)当我们声明一个类类型的变量时,只创建一个引用,即没有为该对象分配内存。要为对象分配内存,我们使用new()。
2)将一个对象分配给另一个对象时,只分配参考。它不会复制成员变量。
因此,在链接列表中,我们通过将以下节点的引用分配给当前节点" next"来链接两个节点。领域。虽然不相关,但我想重要的是要意识到,与数组相比,链表确实需要额外的内存来存储指针变量。