问题标签 [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 回答
6311 浏览

c - 查找大小未知的循环链表的最后一个节点,并且最后一个节点指向链表第一个节点以外的任何其他节点

如何找到我不知道大小的循环链表的最后一个节点,并且最后一个节点指向除链表的第一个节点之外的任何其他节点?

0 投票
6 回答
4925 浏览

algorithm - 向后打印一个简单的链表,不递归,最多两次,使用恒定的额外内存,保持原样

您必须向后打印一个简单的链表:

  • 没有递归
  • 具有恒定的额外内存
  • 在线性时间内
  • 保持列表不变
  • 加 最多两遍
0 投票
6 回答
5596 浏览

c - 了解C中双向链表中的双指针

我明天要考试,我试图理解教师在课堂网站上放置的这个双向链表示例,但我很难理解它......

这是代码:

这是输出:

我没有得到的是“搜索”功能。传递的列表是一个指向 DL 指针的指针,对吧?我们正在寻找一个数字,因为我们一直在做(*lptr) = (*lptr)->next (或 prev) 来遍历整个列表。我不明白为什么第二次调用 printList() 会打印整个列表...在进行了 search() 调用之后,“列表”不应该只有我们寻找的元素之后的元素吗?指针被改变了,为什么当我们从 search() 返回时指针恢复到第一个元素并打印整个列表?

如果我更改 search() 函数并在第一行添加(*lptr) = NULL ,这就是我没有得到的原因,第二次调用 printList() 将不会打印任何内容,因为指针已更改,它是现在为 NULL,没有什么可打印的。为什么(*lptr) = (*lptr)->next没有类似的效果?指针也被更改为下一个,第二个 printList() 调用不应该只打印列表中的剩余元素吗?

编辑:
每个答案似乎都是正确的,我将按“最旧”对其进行排序并接受“最快”的答案,不要生气,我需要一些标准。我可以继续看看哪个答案可以更好地了解这个问题,但这无关紧要,因为我已经知道所说的一切。我只是愚蠢到甚至不看 printList() 函数并认为它没问题,我还认为错误出现在 search() 函数的某个地方。但我知道我是对的,我知道指针正在改变并且列表无法打印所有内容,但我现在明白为什么......

0 投票
5 回答
241 浏览

c++ - 在 C++ 的模板中使用运算符

我正在尝试使用指针实现一个 List 类,并尝试实现一个函数 LOCATE(T x),其中 T 用于模板,如果找到则返回元素 x 的第一个位置,否则返回最后一个位置 + 1。

我的功能代码是

我用 T 作为字符串初始化我的列表

但我收到一条错误消息

'bool std::operator ==(const std::istreambuf_iterator<_Elem,_Traits> &,const std::istreambuf_iterator<_Elem,_Traits> &)' : 无法推导出 'const std::istreambuf_iterator<_Elem 的模板参数, _Traits> &' 来自 'std::string

即使为字符串类定义了“==”运算符,为什么还会出现错误?'

节点的代码是

调用代码是

0 投票
4 回答
7793 浏览

c# - 复制一个链表

我写了一个创建链表副本的方法。
你们能想出比这更好的方法吗?

0 投票
3 回答
3235 浏览

algorithm - 如何在不使用任何额外内存的情况下从 unicode 字符的链接列表中消除重复项

“在 unicode 字符的链表中查找重复出现的元素。如果发现一个 unicode 字符/s 有重复,则只需删除该重复节点并调整列表。限制是不使用任何额外的内存。”</p>

我的回答:
假设 unicode char 不包括代理对 char 因为我正在使用 c#

我不知道如何找到重复字符,除非您在遍历列表时知道先前节点的值,并且要维护先前的值,您将需要额外的内存(哈希表)。

小伙伴们,你们能想出什么办法来解决这个问题吗?这是其中一个网站上的面试问题。也有可能在 O(n) 时间内解决这个问题吗?
这是我的实现。你能提供反馈,以便我可以做得更好吗?

0 投票
1 回答
690 浏览

c# - 在 C# 中实现链接列表排序的问题

我无法为下面定义的单个列表实现排序算法(合并)我的合并排序方法总是给我 null..我无法弄清楚有什么问题你们能帮帮我吗?

节点类

链表类

我的合并排序代码

我实现了以下辅助方法来实现合并排序

AlternateSplitting:此方法会将列表拆分为 2 个列表

此方法将合并 2 个列表并返回一个新列表

0 投票
3 回答
9229 浏览

c# - 在链表 C#.NET 中移动项目

我正在尝试移动列表中的项目,但是当我与最后一个选项进行比较时,我在移动移动链接列表中的项目之前退出。有没有办法在节点放在最后并且无法循环移动项目之前做到这一点?

0 投票
7 回答
443 浏览

c - 如何编写一个函数来获取任何节点类型的链表并释放它使用的内存?

我相信你们中的一些人已经经历过。我有两个不同类型的链表,我有两个不同的函数来释放它们使用的内存。这两个功能是相同的,除了一件事。

通常,释放列表的函数如下所示:

T节点类型在哪里。这些功能之间的唯一区别是标记线。
有没有办法编写一个函数/宏来获取指向任何链表头部的指针并释放它?

我尝试了几个想法,但我会从你那里放过它们,因为它们是错误的和失败的,而不是给细节带来负担。

0 投票
2 回答
567 浏览

list - 哪种数据结构最能代表这些数据?

替代文字

这是列表列表还是只是一堆树(森林)?