跳轉到內容

資料結構

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年。

此外,作為一個線上參考,可以瞭解當今演算法的範圍:演算法詞典

華夏公益教科書