?? 說明.txt
字號:
聲明:使用這些類是使用者的自愿行為,作者對源代碼的質量不提供任何形式的保證,如果使用者因使用這些類而造成的任何損失都與作者無關,作者不承擔任何責任。
array.h: 安全數組,可自動增長大小(可隨機訪問,但擴充時效率很低,所以在初始化時盡量選擇合適的大?。?linkedlist.h: 普通鏈表(可隨機訪問,但隨機訪問效率很低,是通過循環到指定位置來實現的)
dclinkedlist.h× 雙向循環鏈表(不可隨機訪問,但可正向、反向循環,且大部分操作比普通鏈表效率高,推薦使用)
hashtable.h: 哈希表(使用鍵值標識元素,鍵值一樣的元素即認為是同一元素)
set.h: 集合(從 dclinkedlist 派生,基本一樣,只是插入時保證元素不會重復)
stack.h: 堆棧(內部使用 dclinkedlist 成員,所以代碼很簡單且不會溢出)
binstree.h: 二叉搜索樹(元素不會重復)
avltree.h×: AVL 平衡樹(元素不會重復)
gentree.h×: 一般樹(使用二叉樹方法實現的一般樹)
DFA.h: 通用自動機(以 hashtable 實現的自動機)
×雙向循環鏈表雖然所占內存比普通鏈表要大,但大部分操作都要比普通鏈表效率高,如果不需要隨機訪問,推薦使用(其實鏈表的隨機訪問效率是很低的,如果經常需要隨機訪問,還是使用安全數組),hashtable.h 由于代碼的特殊原因,難以使用雙向循環鏈表(以后再看吧),注意雙向循環鏈表是如何判斷到達鏈表尾的。
×AVL 樹的插入函數成本非常高,且該類沒有完全實現(例如,刪除函數),但 AVL 的搜索效率極高,所以適用于在程序開始前初始化程序中經常要搜索的數據集合,一般應用二叉搜索樹已經足夠了。
×一般樹由于不是線性表,所以很多函數、使用方法都和其它類不太相同(其實二叉搜索樹和 AVL 平衡樹都可看成線性表,但一般樹不是)
所有類均使用模板編寫,并不特定于 Windows 平臺,所有只要有 C++ 編譯程序的操作平臺都可使用。
以上代碼都是作者照書上改寫的,并未經過嚴格測試,如果在使用過程中發現任何問題、困難、源代碼錯誤或可改進的地方,非常歡迎來信與我討論。電子郵件地址:pro_zw@sina.com.cn。
作者會根據所發現的問題不斷改進各類并增加新的數據結構,使其不斷完善。
使用者也可根據需要隨意更改各代碼,但希望發給本人更改后的結果,這也是希望能夠參考各方面的意見而改進各類的代碼,并沒有其他意思。
參考書目:
《數據結構-C++ 語言描述》 William Ford William Topp 著 清華大學出版社
《計算機程序設計藝術》 DONALD E.KNUTH 著 清華大學出版社
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -