跳轉到內容

資料結構

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,Nagpur,2008 年。
[Judith] Judith L Gersting。計算機科學的數學結構。W.H. Freeman and Company,2014 年。

此外,作為對當今演算法範圍的線上參考:演算法詞典

華夏公益教科書