首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双向链表插图

双向链表插图
EN

Stack Overflow用户
提问于 2009-05-14 16:30:31
回答 4查看 1.7K关注 0票数 1

我正在尝试说明一个双向链表问题。这是我最近一直在研究的一个旧测试。

问题如下:

绘制此代码后的最终链接:

代码语言:javascript
复制
ListNode n1 = new ListNode();
ListNode n2 = new ListNode();
ListNode n3 = n1;
n1.next = n2;
n3.prev = n1;
n1.next.prev = n3.next;

我迷路的地方是最后一行代码。

n1.next.prev = n3.next;

以下是解决方案:

http://www.imagechicken.com/viewpic.php?p=1242322384048558300&x=jpg

有没有人能帮我解决这个问题,或者把我引向一个好的方向?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-05-14 16:43:56

这一点的关键是n1和n3指向相同的ListNode。

下面是3次操作后的状态:

代码语言:javascript
复制
n1.next = n2;
// n1.prev = null;
// n1.next = n2;
// n2.prev = null;
// n2.next = null;
// n3.prev = null;
// n3.next = n2;

n3.prev = n1;
// n1.prev = n1;
// n1.next = n2;
// n2.prev = null;
// n2.next = null;
// n3.prev = n1;
// n3.next = n2;

n1.next.prev = n3.next;
// n1.prev = n1;
// n1.next = n2;
// n2.prev = n2;
// n2.next = null;
// n3.prev = n1;
// n3.next = n2;

因此,在最后一条语句中,n3.nextn1.next相同,即n2。因此,最后一条语句等同于设置n2.prev = n2

票数 3
EN

Stack Overflow用户

发布于 2009-05-14 16:43:27

我会试着画三个盒子。把每个盒子分成三份--三分之一是标签,三分之一是“上一个”,三分之一是“下一个”。然后从所有的"prev“和"next”到适当的标签绘制连接线,以查看事物是如何链接的。

一张图片胜过千言万语。

票数 0
EN

Stack Overflow用户

发布于 2009-05-14 16:45:54

这类事情会让人感到困惑,直到您意识到ListNode只有两个实例;n1、n2和n3都引用了这些实例。尤其是,n1、n2和n3的值只设置一次;因为n3的值被设置为n1,所以在这段代码中,您可以很容易地将n3替换为n1,它的工作方式也是一样的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/864388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档