Questions tagged «linked-list»

链接列表是一种数据结构,其中列表元素不一定按顺序存储,而是每个元素都包含对列表中下一个(或可选的上一个)元素的引用。该标签应与其他标签一起使用,这些标签指示正在使用的编程语言([c],[c ++],[java]等)以及正在使用的任何库或插件,例如[c ++-standard-library]。帖子本身应包含该问题的源代码。


25
如何检测链表中的循环?
假设您在Java中有一个链表结构。它由节点组成: class Node { Node next; // some user data } 每个节点都指向下一个节点,但最后一个节点除外,后者的下一个为空。假设列表有可能包含一个循环-即最终节点(而不是null)具有对列表中位于其之前的节点之一的引用。 最好的写作方式是什么 boolean hasLoop(Node first) true如果给定的Node是带有循环的列表的第一个,则将返回false什么,否则返回?您怎么写才能占用恒定的空间和合理的时间? 这是带有循环的列表的图片:


30
数组与链表
为什么有人要在数组上使用链表? 毫无疑问,对链接列表进行编码比使用数组要花费更多的工作,并且您可能会想知道什么可以证明需要付出额外的努力。 我认为在链表中插入新元素很简单,但这是数组中的一项主要工作。与使用数组存储在数组中相比,使用链表存储还有其他优势吗? 这个问题不是一个重复这个问题,因为在这个问题涉及的一般数据结构的另一个问题是专门关于特定Java类要求。



28
Python链表
在python中使用链表的最简单方法是什么?在方案中,链表仅由定义'(1 2 3 4 5)。实际上,Python的list [1, 2, 3, 4, 5]和tuple (1, 2, 3, 4, 5)不是链表,而链表具有一些不错的属性,例如恒定时间串联,并且能够引用其中的各个部分。使它们一成不变,并且它们真的很容易使用!


8
为什么ArrayDeque比LinkedList更好
我试图理解为什么Java的ArrayDeque比Java的LinkedList更好,因为它们都实现了Deque接口。 我几乎看不到有人在他们的代码中使用ArrayDeque。如果有人对ArrayDeque的实现方式有了更多的了解,那将是有帮助的。 如果我理解它,我会更自信地使用它。对于JDK实现管理头和尾引用的方式,我不清楚。


6
如何在Java中创建链接列表数据结构?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 用Java创建链接列表的最佳方法是什么?

11
为什么链表使用指针而不是将节点存储在节点内部
之前,我在Java中广泛使用链表,但是我对C ++还是很陌生。我正在使用这个在项目中提供给我的节点类 class Node { public: Node(int data); int m_data; Node *m_next; }; 但是我有一个问题回答得不是很好。为什么有必要使用 Node *m_next; 指向列表中的下一个节点,而不是 Node m_next; 我了解使用指针版本更好。我不会争辩事实,但是我不知道为什么会更好。关于指针如何更好地进行内存分配,我没有一个明确的答案,我想知道这里是否有人可以帮助我更好地理解这一点。

15
在什么情况下链表有用?
在大多数情况下,我看到人们尝试使用链接列表,在我看来,这是一个糟糕的选择。探索链表是否是数据结构的好选择的环境可能会很有用。 理想情况下,答案应阐明选择数据结构时使用的标准,以及在特定情况下哪种数据结构最有效。 编辑:我必须说,不仅数字,而且答案的质量给我留下了深刻的印象。我只能接受一个,但是如果还没有更好的东西的话,我还要说另外两三个。只有一对夫妇(尤其是我最终接受的一对夫妇)指出了链表提供真正优势的情况。我确实认为,史蒂夫·杰索普(Steve Jessop)不仅提出了一个答案,而且提出了三个不同的答案,因此值得得到荣誉奖,我发现所有这些都给人留下了深刻的印象。当然,即使发布的内容仅是评论而不是答案,我认为尼尔的博客条目也很值得阅读-不仅内容丰富,而且也很有趣。

30
如何仅使用两个指针来反转单链列表?
我想知道是否存在仅使用两个指针来反转单链列表的逻辑。 以下是用于逆转使用三个指针即单链表p,q,r: struct node { int data; struct node *link; }; void reverse() { struct node *p = first, *q = NULL, *r; while (p != NULL) { r = q; q = p; p = p->link; q->link = r; } first = q; } 还有其他替代方法可以反向链接列表吗?就时间复杂度而言,颠倒单个链表的最佳逻辑是什么?

14
为什么要在链表O(1)的中间插入?
根据Wikipedia关于链表的文章,在链表的中间插入被视为O(1)。我认为这将是O(n)。您是否不需要定位列表末尾附近的节点? 这种分析是否不考虑发现节点操作(尽管是必需的),而仅考虑插入本身? 编辑: 链接列表比数组具有多个优势。在列表的特定点插入元素是一项固定时间的操作,而在数组中插入则可能需要移动一半或更多的元素。 上面的陈述对我有些误导。如果我错了,请纠正我,但我认为结论应该是: 数组: 查找插入/删除点O(1) 执行插入/删除O(n) 链接列表: 找出插入/删除点O(n) 执行插入/删除O(1) 我认为,您唯一不需要找到位置的就是保持某种指针(在某些情况下为头和尾)。因此,我们不能断然地说,链表总是在插入/删除选项中击败数组。
105 linked-list  big-o 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.