資料結構

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