数据结构中所需的最低知识

时间:2012-02-09 06:14:48

标签: data-structures computer-science

我在wikipedia上找到了大量数据结构,同时也查看了数据结构中的几本书,发现它们各不相同。我想知道新毕业生应该拥有的基本或最低数据结构知识清单是什么?

考虑到实施方面存在差异,还有必要了解它们在多种编程知识中的实现。如果我知道C中链接列表的实现应该知道它基于Java的实现吗?

如果你可以帮助我明确地理解它会很棒:

  • 基本数据结构(CS毕业所需)
  • 高级数据结构

编辑:我对数据结构列表更感兴趣。

3 个答案:

答案 0 :(得分:2)

看看Cormen等人的Introduction to Algorithms。根据我的经验,如果你知道那里有什么东西,那么你就会有任何事情发生在你身上。

我不会考虑知道任何实现非常有用。如果你了解基础知识,你应该能够快速实现自己的版本,但是你可能永远不会有,因为有可用的库。因此,实践规则是:了解你的图书馆!

即便如此,重要的是要了解数据结构的属性(例如空间开销,中央操作的运行时,并发访问时的行为,(im)可变性......)因此您将始终使用最适合的数据结构你的任务。

答案 1 :(得分:1)

这个问题确实有点过于宽泛,甚至是你缩小范围的方式,因为这取决于你正在考虑的未来路径。研究生院?博士学位?行业?哪个行业?

但是作为一个粗略的最低限度,我会说,看看CLRS(如拉斐尔的建议)并选择以下内容:

  • 链接列表,以及堆栈,队列等变体
  • 基本堆
  • 基本哈希表
  • 树木,特别是包括二元搜索树,最好是熟悉至少一种自平衡BST
  • 图表,矩阵表示和邻接列表表示

可能还有一些更基于你正在寻找什么样的工作。作为博士学位的人......好吧。他们都是。在某些时候,你将采取一个限定词,并期望知道他们中的大多数。

答案 2 :(得分:0)

查看麻省理工学院的OCW Intro to Algorithm Course理论上这是一本很棒的教程。 对于在Java中练习数据结构,请检查:数据结构和数据结构。 Robert Lafore的Java算法非常出色。 用一种语言实现就足够了,但尝试用面向结构的语言来解决它,比如C和OO语言,比如Java / C ++。这对准备面试有很大帮助。 C中基本数据结构的一个很好的资源:here