跳转到内容

数据结构

50% developed
来自维基教科书,开放的世界开放的书籍

本书讲述了高效数据结构的创建和分析。 它涵盖了

  • 原始的节点结构;
  • 渐进符号,用于数学地讨论性能特性;
  • 内置数组
  • 从节点或数组构建的列表结构
  • 迭代器作为枚举序列中项目的抽象模型;
  • 堆栈队列,用于计算后进先出和先进先出排序;
  • 二叉树和通用结构,用于搜索或表示层次关系;
  • 最小和最大,用于表示基于优先级的排序;
  • 结构,用于表示数据元素之间更一般性的关系;
  • 哈希表,用于有效检索字符串和其他对象;最后
  • 权衡结构之间的权衡,以及选择最合适结构的策略。

要理解本书中的内容,你应该对编程语言足够熟悉,能够使用和编写自己的变量、算术表达式、if-else 条件、循环、子程序(也称为函数)、指针(也称为引用或对象句柄)、结构(也称为记录或类)、简单的输入和输出以及简单的递归。

由于许多不同的语言对数据结构的构建方法不同,因此我们使用伪代码,这样你就可以将代码翻译成你自己的语言。

章节目录

[编辑 | 编辑源代码]

为本书的开发做出贡献!

[编辑 | 编辑源代码]

一个维基教科书类似于一个开源软件项目:贡献者为项目创建内容以帮助他人,为个人充实,或为了完成贡献者自己工作的某些事情(例如,讲座准备)。

一本开放的书,就像一个开放的程序一样,需要时间才能完成,但即使读者做出微不足道的贡献,也能从中受益匪浅。例如,您可以修复文本中的“错误”(错误可能是印刷错误、解释错误、技术错误、美学错误或其他错误),以制作一本更好的书。如果您发现修复错误的机会,只需点击“编辑”,进行更改,然后点击保存。其他贡献者可能会审查您的更改,以确保它们适合本书。如果您不确定,您可以访问讨论页面并提出询问。请使用常识。

如果您想做出更大的贡献,您可以查看那些过短或需要更多工作的部分或章节,然后开始写作!在开始写作之前,请务必先浏览一下整本书,以避免内容重复。此外,您应该阅读贡献者指南页面,以获取一致性提示和建议。

请注意,您不需要一次性贡献所有内容。您可以添加模板“{{TODO|待办事项描述}}”到页面,也许其他人会为您完成这些部分。

这本书有意保持专注,以便更容易做出贡献(因为这样最终目标就更加清晰)。这本书是关于算法的三本计算机科学教科书的第一部分,接着是关于算法技术的算法高级数据结构与算法。如果您想贡献一个还没有列在三本书中的主题,请尝试将它放在高级这本书中,这本书的性质更加包容。或者,如果您认为该主题是基础性的,您可以访问算法数据结构讨论页面并提出建议。

此外,欢迎以附录的形式提供数据结构的实现(使用Ada、C、C#、Perl、Python、Java、Ruby或Scheme)。

参考资料

[编辑 | 编辑源代码]
[Aho] Alfred V. Aho, Jeffrey D. Ullman, John E. Hopcroft. 数据结构与算法。Addison Wesley,1983年。
[CLRS] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. 算法导论。McGraw-Hill,2001年。
[Knuth] Donald E. Knuth. 计算机程序设计艺术,第1-3卷。Addison-Wesley Professional,1998年。
[Kishor] S.B. Kishor 数据结构,第3版。Das Ganu Prakashan,纳格浦尔,2008年。
[Judith] Judith L Gersting. 计算机科学的数学结构。W.H. Freeman and Company,2014年。

此外,作为一个在线参考,可以了解当今算法的范围:算法词典

华夏公益教科书