首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您是否在业务编程中使用链表、双向链表等?

您是否在业务编程中使用链表、双向链表等?
EN

Stack Overflow用户
提问于 2009-06-22 14:25:45
回答 12查看 2.9K关注 0票数 7

像链表这样的数据结构对于真正的编程来说是纯粹的理论上的东西,还是你真的在使用它们?它们是否包含在泛型中,这样您就不需要构建它们(假设您的语言具有泛型)?我不是在争论理解它们是什么的重要性,只是在学术界之外对它们的使用。我从前端web和后端数据库的角度提出了这个问题。我肯定有人在某处造了这些东西。我是从我的上下文中问出来的。

谢谢。

编辑:泛型可以让你不必构建链表之类的东西吗?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2009-06-22 14:29:10

这将取决于您使用的语言和框架。大多数现代语言和框架都不会让你重新发明这些轮子。取而代之的是,他们将提供像List<T>或HashTable这样的东西。

编辑:

我们可能一直在使用链表,但没有意识到这一点。我们不必自己编写链表的实现,因为我们使用的框架已经为我们编写了它们。

你也可能对“泛型”感到困惑。您可能指的是像List<T>这样的泛型列表类。这与非泛型类列表相同,但元素的类型始终为T。它可能是以链表的形式实现的,但我们不必关心这一点。

我们也不必担心物理内存的分配,或者中断是如何工作的,或者如何创建文件系统。我们有操作系统为我们做到这一点。但我们在学校可能会学到同样的信息。

票数 4
EN

Stack Overflow用户

发布于 2009-06-22 14:29:21

当然。现代语言中的许多“列表”实现实际上是链表,有时与数组或哈希表结合使用以进行直接访问(通过索引而不是迭代)。

链表(尤其是双向链表)在“真实世界”数据结构中非常常见。

我敢说每种通用语言都有一个链表的预建实现,要么是语言原语,要么是原生模板库(例如C++),要么是原生库(例如Java),要么是一些第三方实现(可能是开源的)。

也就是说,在过去的几次中,当我为复杂的数据结构创建基础设施代码时,我自己从头开始编写了一个链表实现。有时完全控制实现是个好主意,有时您需要在经典实现中添加一个“转折”,以满足您的特定需求。当涉及到是否编写自己的实现时,只要您了解替代方案和权衡,就没有对或错。在大多数情况下,当然在像C#这样的非常现代的语言中,我会避免使用它。

另一点是什么时候应该使用列表,而不是数组/向量或哈希表。从你的问题中,我知道你知道这里的权衡,所以我不会过多地讨论它,但基本上,如果你的主要用途是按顺序遍历列表,并且列表大小可能有很大的变化,列表可能是一个可行的选择。另一个注意事项是插入的类型。如果一个常见的用例是“中间插入”,那么列表就比数组/向量有显著的优势。我可以继续,但这些信息在经典的CS书籍中:)

澄清:我的回答是语言不可知的,与泛型没有特别的关系,据我所知,泛型有一个链表实现。

票数 3
EN

Stack Overflow用户

发布于 2009-06-22 15:06:18

单链表是拥有内存效率高的不可变表的唯一方法,它可以被组合来“变异”它。看看Erlang是如何做到的。它可能比数组支持的列表稍微慢一些,但它在多线程和纯函数实现中具有非常有用的属性。

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

https://stackoverflow.com/questions/1027496

复制
相关文章

相似问题

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