问题标签 [doubly-linked-list]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
4559 浏览

java - 将有序二叉树转换为双循环链表

叶子指向空。我必须创建一个看起来像的双向链接列表

(显然 5 应该指向 1)

节点类如下:

如您所见,双向链接列表也是有序(排序)的。

问题:我必须在不使用任何额外指针的情况下从树中创建链表。left树的指针应该是列表previousright指针,树的next指针应该是列表的指针。

我的想法是:由于树是有序树,因此中序遍历会给我一个排序列表。但是在进行中序遍历时,我无法看到将指针移动到何处以及如何移动以形成双向链表。

PS我检查了这个问题的一些变体,但没有一个给我任何线索。

0 投票
1 回答
910 浏览

java - 双向链表 - 再次出现空指针异常

我得到了这个异常,这似乎是我正在使用一个为空的节点做事。有人可以解释我是怎么做到的吗?构造函数应该是什么样的?我已经看到它是空的或带有标题和尾部虚拟节点..

0 投票
3 回答
1403 浏览

java - 双向链表 - 删除方法

我也试图通过用户输入的索引删除双向链表中的节点。这对我来说似乎很有意义,但是在“删除节点”并重新打印列表的内容之后,什么都没有改变。我敢肯定我错过了一些愚蠢的东西。有什么建议吗?

0 投票
0 回答
334 浏览

java - 双向链表 - 添加方法获取 NPE

我在添加到一个空列表时得到一个 NPE。我看不出有什么问题。我已经初始化了 head= null 和 tail = null,然后我正在检查是否 head == null,那么列表必须为空,所以添加到头部。由于它是列表中唯一的节点,因此它的 next 和 prev 必须指向 null 并且 head=newnode 和 tail=newnode。正确的??

0 投票
2 回答
1752 浏览

java - 删除链表中的节点

现在尝试按索引删除节点。我想打印出带有索引的节点列表,以便用户可以选择所见的索引。我认为我的逻辑可以打印带有索引的列表,但没有输入:(

在玩弄这个的时候,我仍然无法打印节点列表,但是输出了“输入您希望删除的索引”并且能够接受用户的选择,但最终得到了 NullPointerException。

删除方法:public void removeEntry(int index){

NullPointerException 来自:

0 投票
3 回答
5825 浏览

java - 双向链表的排序方法

试图弄清楚如何对我的双向链表进行排序。我在这里得到一个空指针异常:

有没有更好的方法或任何建议可以让这一切顺利进行?

0 投票
1 回答
683 浏览

linked-list - 双链表为什么不能删除第一个元素

我在编程方面很“绿色”,明天我必须带作业。它几乎完成了,但有一个小问题。我无法删除第一个元素,如果在尝试删除第一个元素后我在其位置输入一个新元素 mmm.... 可以说我输入了无数个元素。我似乎无法找到问题所在。提前致谢

0 投票
1 回答
171 浏览

java - 使用 Java 泛型类型编译错误

我正在做一个学习练习并使用迭代器创建我自己的链表。课程如下:

在做了相当多的研究之后,实现迭代器的一个好方法似乎是将它作为一个内部类来实现。但是,我在游标类中的 remove 方法出现编译错误。我相信这是因为类型不匹配,尽管我得到的错误remove()不能LinkedList<T>.Cursor<E>应用于<Node<E>)。

我已经为此苦苦挣扎了很长一段时间,但我不明白到底出了什么问题,我将不胜感激您的任何见解。

0 投票
3 回答
1819 浏览

java - Java:有效地插入 LinkedList

我正在优化排序的 LinkedList 的实现。

要插入一个元素,我遍历列表并比较每个元素,直到我有正确的索引,然后中断循环并插入。

我想知道是否有任何其他方式可以在遍历列表的同时插入元素以将插入从 O(n + (n capped at size()/2)) 减少到 O(n) .

ListIterator几乎是我所追求的,因为它的 add() 方法,但不幸的是,在列表中存在等于插入的元素的情况下,插入必须放在列表中它们之后。要实现这个 ListIterator 需要一个它没有的 peek()。

编辑:我有我的答案,但无论如何都会添加这个,因为很多人还没有正确理解: 我正在寻找一个插入点和插入,它的总和高于 O(n)

0 投票
1 回答
868 浏览

data-structures - 哪种数据结构最合适?

哪种数据结构最适合网页浏览器中的正向和反向网页遍历?

答案是双向链表。为什么?为什么我们不能使用带有指针的 Tree 呢?