2012-02-09 26 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