資料結構

本書關於建立和分析高效的資料結構。 它涵蓋了
- 原始的節點結構;
- 漸進符號,用於數學討論效能特徵;
- 內建陣列;
- 從節點或陣列構建的列表結構;
- 迭代器作為列舉序列中專案的抽象模型;
- 堆疊和佇列,用於計算後進先出和先進先出排序;
- 二叉樹和一般樹結構,用於搜尋或表示層次關係;
- 最小和最大堆,用於表示基於優先順序的排序;
- 圖形結構,用於表示資料元素之間更一般的關係;
- 雜湊表,用於有效檢索字串和其他物件; 最後
- 結構之間的權衡,以及選擇最合適的結構的策略。
要理解本書中的內容,您應該熟悉某種程式語言,足以能夠使用和編寫您自己的變數、算術表示式、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 年。 |
此外,作為對當今演算法範圍的線上參考:演算法詞典