数据结构
本书关于创建和分析高效的数据结构。 它涵盖了
- 原始的节点结构;
- 渐进符号,用于数学讨论性能特征;
- 内置数组;
- 从节点或数组构建的列表结构;
- 迭代器作为枚举序列中项目的抽象模型;
- 堆栈和队列,用于计算后进先出和先进先出排序;
- 二叉树和一般树结构,用于搜索或表示层次关系;
- 最小和最大堆,用于表示基于优先级的排序;
- 图形结构,用于表示数据元素之间更一般的关系;
- 哈希表,用于有效检索字符串和其他对象; 最后
- 结构之间的权衡,以及选择最合适的结构的策略。
要理解本书中的内容,您应该熟悉某种编程语言,足以能够使用和编写您自己的变量、算术表达式、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,Nagpur,2008 年。 | |
[Judith] | Judith L Gersting。计算机科学的数学结构。W.H. Freeman and Company,2014 年。 |
此外,作为对当今算法范围的在线参考:算法词典