【发布时间】:2015-01-26 01:03:37
【问题描述】:
我无法理解课程中的链接列表。我似乎遇到的最大问题是数据的存储方式。我看代码主要是add(x)在列表中添加一个新节点但是好像没有意义。
添加代码。
boolean add(T x) {
Node u = new Node();
u.x = x;
if (n == 0) {
head = u;
} else {
tail.next = u;
}
tail = u;
n++;
return true;
}
这直接来自我正在学习的课程的教科书。我上网查找更多资源,我在 GITHUB 上从一本更详细的教科书Source 中找到了这段代码。粘贴代码太长了。
所以总的来说,我看到名为“Head”、“Tail”和“u”的类存储像[Head]->[u]->[Tail] 这样的信息。此外,当我阅读 add 方法时,我将存储的信息可视化为 [Head]->[u]->[u]->[u]->[Tail]。
每个节点如何知道要查看哪个“u”节点。每个都引用u 节点。 u 每次都被覆盖,或者获取 u 信息将返回所有 u 的值。 node.next 如何区分每个 u 节点?不应该是代码而不是:
add(x) {
Node u = new Node();
u.x = x;
}
更像:
add(x,y) {
Node y = new Node();
u.x = x;
}
所以每个节点都有不同的名称链接到[Head]->[a]->[b]->[c]->[Tail]
【问题讨论】:
-
比起理解链表,您似乎需要花一些时间来更好地理解 Java 中对象实例化和范围的概念。但是,要回答您的最后一个问题:不,代码不应该是您提出的。
-
u在add方法中是已知的。这是您在方法中为新创建的节点指定的名称,仅此而已。
标签: java linked-list singly-linked-list doubly-linked-list