《數據結構-C語言版》(嚴蔚敏,吳偉民版)課本源碼+習題集解析使用說明html
先附上文檔歸類目錄:git
課本源碼合輯 連接☛☛☛ 《數據結構》課本源碼合輯github
習題集全解析 連接☛☛☛ 《數據結構題集》習題解析合輯算法
★教材及習題源碼下載★
編程
連接☛☛☛ 嚴蔚敏《數據結構》課本與習題源碼(GitHub倉庫)數組
歡迎Star項目,若有疑問,請在Issues反饋。數據結構
博主有話說:編程語言
01.自學編程,不免思路阻塞,故我在本博客陸續更新了嚴蔚敏,吳偉民版《數據結構-C語言版》各章節的課本源碼和配套習題集答案解析,目的是爲了整理數據結構中的知識點,並與網友交流意見,集思廣益,共同進步。(目前已更新完畢,細節待完善)編輯器
★注★ 左側隨筆分類下用兩個欄目:<課本源碼>、<習題解析>來存放本主題文檔。
函數
<課本源碼>目錄下實現了三種數據結構源碼:
一:課本中重點描述過的數據結構與算法;
二:課本中提到,但沒有詳細描述的數據結構;
三:課本中未提到,但在習題集中涉及到的數據結構。
<習題解析>目錄下存放了配套習題集中每章的習題解答,但對於算法設計題,要注意其相對路徑,由於涉及到了別的文檔的引用。
各文檔的組織方式參見附錄二中的圖示,有疑問聯繫博主。
02.本源碼與解析涵蓋了《數據結構》課本和習題集兩部分,課本和習題集分別如下圖書籍爲參照(我有左邊的紙質版和右邊的電子版,貌似內容沒區別):
03.全部源碼實現均使用C語言,遵循C99標準,使用C-Free 5(C-Free置gcc編譯器,編譯時,須要在菜單欄,定位到構建-->構建選項-->類別-->C Language,勾選第三個:"ISO C99 plus GNU extensions [-std=gnu99]",即編譯選項用-std=gnu99,而不是-std=c89或者-std=c99)測試經過(不要在CFree裏建立工程,若是確實想在工程裏運行,那文件互相引用的方式須要改寫)。(是的,初學C語言,鄭重推薦CFree這個小巧的IDE(win7),簡潔、易用、強大!出於兼容性緣由,win10上更推薦CLion。注意事項參見第6條)
附下載連接:CFree5
04.爲了便於引用、查閱,各章內容在計算機中分文件夾存放,其中,《▲課本算法實現》中存放對課本中算法的實現,《▼配套習題解析》存放對題集中習題的解答,各源文件按章、節組織,組織方式見附錄二。
★★★05.注意各文檔引用.h文件或.c文件時的相對路徑。爲保證源碼中對各.h或.c文檔的引用有效,請保持各文檔的相對位置固定。
★★★06.對於主文檔(含有main函數的文檔),#include自定義源碼時引入的是.c文件而不是.h文件,其緣由是測試用的gcc編譯器支持不建立工程的狀況下直接編譯。若是是在Visual Studio等微軟的編譯器下作測試,則必須先建立工程,並引入.h文件,並且,對全局變量的定義等可能須要做出修改,變爲帶有extren的形式。對於使用VC6或Visual Studio,還有其餘編譯器產生的各類編譯問題,請自行百度解決。
★★★07.部分類型定義名稱、宏名、函數名和算法步驟與《數據結構》原書略有區別,但算法思想與原書一致,這樣「改寫」主要是爲了易於區分各名稱並簡化操做。部分文件的測試數據設置爲單獨的文檔而不從控制檯錄入,目的是爲了測試時方便,避免重複錄入數據。
★★08.若是你使用的編譯器不是CFree,請注意文件編碼格式(固然,若是是你本身從頭敲代碼的話,忽略這一條!)
09.各算法並不是100%完善,未考慮全部意外,未作過多輸入與輸出驗證。
10.有的數據結構在建立以前須要初始化,有的建立和初始化合爲一體。
11.大多數組0號單元棄用,或用做計數器。
12.留意全局變量和類型定義、宏定義。
13.算法的測試文檔中有些看似「多餘」的縮進是爲了區分不一樣功能模塊,便於瀏覽。
★★★14.在習題集解析中,不一樣人可能會對同一個題的理解有差異,因此這裏只是表達我我的的想法,不表明其餘任何人的見解。
15.全部教材源碼已上傳到Github,僅供參考,望你們勿抄做業。
★★★16.若對代碼有疑問,或者發現有錯誤,再或者有好的建議、思路,均可以聯繫博主。
17.緒論中的Scanf.c文件包含一個Scanf函數,用來從文件中讀取西文字符。設計這個函數的緣由是減小測試工做,避免每次測試時在控制檯手動輸入數據...…
18.關於IDE,前面說過,學習C語言,從我我的審美角度,在win7上,新手只推薦CFree,配合mingw這個編譯工具集,簡潔強大又好看。除此以外,還推薦CLion(在win10上一樣好用)CLion和CFree使用的編譯環境同樣,不一樣的是,這個軟件更「智能」,顏值也很高,操做體驗也不錯,並且開發C++也毫無壓力,不過對電腦配置可能要求高一點點。若是你偏心微軟,也能夠去使用他們家的VS除了體積龐大操做複雜外,也是個很是強悍的IDE,開發大型項目必備,可是初學者就算了吧,不太建議...固然,如今微軟有了輕量級的編輯器VS Code,但這個工具不帶編譯功能,須要本身配置工具鏈,一樣不推薦初學者使用...
19.關於C/C++的編譯器,粗略分爲微軟和GNU吧,微軟的通常集成在本身的IDE裏,GNU的有gcc(C語言)和g++(C++)等,這裏的CFree裏使用的mingw就是gcc和g++等的一個集合,若是想使用最新版,能夠自行去下載配置。
20.★★★★若是沒有認真學過一門編程語言,請不要嘗試這門課程,或者說,即便想學,也不要從這本書開始。這本書的定位應該是假設你已經熟悉某一種語言,不限於C語言,也能夠是C++、Java、Python等。固然,懂得C/C++最好了,由於這本書的示例代碼就是C/C++的混編麼(絕大部分是C)。
21.待續…
附一:《數據結構》課本源碼《▲課本算法實現》目錄下的文件組織方式,《▼配套習題解析》部分的組織方式與此相似,只不過每一章內部存放的是習題解析和測試文檔。
附二:源碼目錄組織(注意保持各文件相對位置固定):