2012-02-09 27 views
0

我在wikipedia上发现了大量的数据结构,也研究了数据结构中的几本书,并发现它们有所不同。我想知道一个新的CS毕业生应该具备的基本或最低数据结构知识清单是什么?Datastructres需要的最低知识

考虑到实现方式的不同,还需要了解它们在多个编程知识中的实现。如果我知道C中链接列表的实现,我应该知道它的基于Java的实现?

这将是巨大的,如果你能帮助我斩钉截铁地理解:

  • 基本的数据结构(必需的CS毕业生)
  • 高级数据结构

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

+1

这似乎并不像一个真正的问题..你想一般了解数据结构?采取数据结构课程。 – WeaselFox 2012-02-09 06:17:15

+0

这个问题可能适用于即将到来的[计算机科学栈交换](http://area51.stackexchange.com/proposals/35636/computer-science-non-programming?referrer=pdx8p7tVWqozXN85c5ibxQ2)。所以,如果你喜欢有这样一个问题的地方,请继续前进,并帮助这个提议起飞! – Raphael 2012-02-09 11:24:34

+0

@Raphael请让我知道我可以如何将您的建议转移到正确的论坛。 – 2012-02-09 16:46:49

回答

1

这个问题实际上有点过于宽泛,即使你缩小了它的范围,因为它取决于你在看什么样的未来路径。研究生院?博士轨道?行业?哪个行业?

但作为一个粗略的最低,我会说,看看CLRS(拉斐尔建议),并挑选了以下工作:

  • 链表,像栈,队列等变化
  • 基本堆
  • 基本哈希表
  • 树木,尤其是包括二叉搜索树,优选与至少一种自平衡BST
  • 图形,既矩阵表示和邻接升熟悉ist representation

而且可能还有一些基于您正在寻找什么样的工作。作为博士生轨道上的人......好。他们全部。在某些时候,你会拿到一个预选赛,并且预计会知道其中的大部分。

2

看看Cormen等人的Introduction to Algorithms。根据我的经验,如果你知道那里有什么,你就会为你找到任何东西。

我不会考虑知道任何实现非常有用。如果你知道基础知识,你应该能够快速实现你自己的版本,但是你可能永远不会需要,因为有这样的库。所以实践的规则是:了解你的图书馆!即使如此,重要的是要知道数据结构的属性(例如空间开销,中央操作的运行时间,并发访问下的行为,(im)可变性等),因此您将始终使用最适合的数据结构到你手头的任务。

+0

同意。尽管知道每个数据结构的操作的复杂性是值得的。需要多长时间才能插入链表或哈希表,从数组中删除需要多长时间等等。了解最佳数据结构非常重要 - 谷歌会记住您的实现细节;) – Royce 2012-02-09 11:40:04

+0

运行时肯定是我写“属性”时的意图。编辑的清晰度。 – Raphael 2012-02-09 11:45:31

0

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