问题标签 [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 投票
33 回答
185046 浏览

java - 递归地反转Java中的链表

一段时间以来,我一直在为一个班级从事 Java 项目。它是一个链表的实现(这里称为AddressList,包含称为 的简单节点ListNode)。问题是一切都必须使用递归算法来完成。我能够在没有一种方法的情况下做得很好:public AddressList reverse()

列表节点:

现在我的reverse函数只是调用一个辅助函数,它接受一个参数来允许递归。

我的辅助函数具有private ListNode reverse(ListNode current).

目前,我让它使用堆栈迭代地工作,但这不是规范所要求的。我在 C 中找到了一种算法,它可以递归地反转并手动将其转换为 Java 代码,并且它可以工作,但我不了解它。

编辑:没关系,我在此期间想通了。

当我在这里时,有人发现这条路线有什么问题吗?

0 投票
10 回答
87329 浏览

algorithm - 二叉树 vs. 链表 vs. 哈希表

我正在为我正在处理的项目构建符号表。我想知道人们对存储和创建符号表的各种方法的优缺点有何看法。

我进行了相当多的搜索,最常见的推荐是二叉树或链表或哈希表。以上所有的优点和缺点是什么?(在 C++ 中工作)

0 投票
15 回答
226597 浏览

arrays - 何时在数组/数组列表上使用链表?

我使用了很多列表和数组,但我还没有遇到过这样的场景:数组列表不能像使用链表一样容易,如果不是更容易的话。我希望有人能给我一些链接列表何时明显更好的例子。

0 投票
8 回答
184021 浏览

c++ - 如何在 C++ 中创建列表?

如何在 C++ 中创建列表?我需要它来创建一个链表。我该怎么做呢?有没有我可以学习的好教程或示例?

0 投票
7 回答
1448 浏览

c - 哪一个使用链表或静态数组?

我在 C 中有一个类似于数据库表记录的结构。现在当我使用 select 查询表时,我不知道我会得到多少条记录。我想将选择查询返回的所有记录存储在我的结构数据类型的数组中。

哪种方法最好?

方法一:查找数组大小并分配

  1. 首先通过从表中执行 select count(*) 来获取记录数
  2. 分配一个静态数组
  3. 运行 select * from table 然后将每个记录存储在我的结构中。

方法二:使用单链表

哪种实现最好?

我的要求是,当我拥有所有记录时,我可能会复制它们或其他东西。但我不需要随机访问,也不会对特定记录进行任何搜索。

谢谢

0 投票
5 回答
926 浏览

performance - 在单链表中找到指向节点 M 步长的指针的算法

假设有一个长度未知的单链表。我们想找到到尾部有 M 步的节点。

例如,单列表是这样的:(A)->(B)->(C)->(X)->(Y) 和 M = 2。那么输出应该是指向 (C) 的指针。

面对这个测验,我的第一反应是遍历单链表得到长度N。然后第二次遍历单链表,但只向前NM-1步。时间复杂度为 O(n),空间复杂度为 O(1)。

然后,我面临的挑战是找到一种解决方案以单次遍历的方式进行。解决方案是有两个指针。第二个指针比第一个指针落后 M 步。这两个指针以相同的速度向前移动。当第一个指针到达尾部时,第二个指针就是结果。

经过对这个问题的深入思考,我真的不相信第二个“棘手”的解决方案比第一个更好。它是一次遍历,但它也涉及 2*NM 指针分配。

有没有想过这个问题?还有其他真正更快的解决方案吗?

0 投票
7 回答
58885 浏览

algorithm - 如何确定一个链表是否有一个仅使用两个内存位置的循环

有谁知道一种算法来查找链表是否在自身上循环,只使用两个变量来遍历列表。假设您有一个对象的链接列表,那么什么类型的对象都没有关系。我在一个变量中有一个指向链表头部的指针,我只得到另一个变量来遍历列表。

所以我的计划是比较指针值,看看是否有相同的指针。该列表的大小有限,但可能很大。我可以将两个变量都设置为头部,然后用另一个变量遍历列表,总是检查它是否等于另一个变量,但是,如果我确实遇到了一个循环,我将永远无法摆脱它。我认为这与遍历列表和比较指针值的不同速率有关。有什么想法吗?

0 投票
4 回答
10626 浏览

sql - 如何在sql中对链表进行排序?

我已经将链表实现为自引用数据库表:

其中 Id 是主键,ParentId 是列表中上一个节点的 Id。第一个节点的 ParentId = NULL。

我现在想从表中选择,按照它们应该出现的相同顺序对行进行排序,作为列表上的节点。

例如:如果表包含行

然后使用标准对其进行排序,结果应该是:

您应该使用SomeData列作为控件,所以请不要欺骗 通过 SomeData 进行 ORDER :-)

0 投票
7 回答
4745 浏览

c++ - 为什么我不能将此对象推送到我的 std::list 上?

刚开始用 C++ 编程。

我创建了一个 Point 类、一个 std::list 和一个迭代器,如下所示:

然后我将新点推送到 pointList 上。

现在,我需要遍历 pointList 中的所有点,所以我需要使用迭代器进行循环。这就是我搞砸的地方。


更新

你们是对的,问题不在于我迭代列表。看来问题出在我试图将某些内容推送到列表时。

确切的错误:

mouse.cpp:在函数void mouseHandler(int, int, int, int)': mouse.cpp:59: error: conversion fromPoint*' 中请求非标量类型“Point”

这些行是:

Point* 到非标量类型 Point 之间的转换是什么?我只是想创建新点并将它们推到这里的列表中。

0 投票
6 回答
38896 浏览

java - 比较 LinkedList.contains() 中的对象

我希望能够让 LinkedList.contains() 为自定义比较器返回 true。

假设我有 1 个 LinkedList 和 2 个对象

从技术上讲,两个对象在比较方面是相同的(MyObject 实现 Comparable)

(a == b) == 真

但是,当我执行以下操作时,myList 不会为 myList.contains(b) 返回 true

我认为它是因为 contains 将检查对象引用并看到 a 和 b 是 2 个不同的对象。有什么办法可以做到,所以我不必扩展 LinkedList 来比较这些对象?