這本書3月份看的,之前沒玩博客,所以沒寫總結,現在補上。
因為我本科專業不是計算機,只是對計算機很有興趣,想跨專業考計算機系的研究生,這是決定跨考之后看的
第一本計算機專業書。看完之后收獲頗大。
以前寫程序基本上沒有數據結構的概念,記得當初學C語言的時候,覺得鏈表好難理解,心想怎么會有這么復
雜的東西。再加上寫的程序都比較水,上不得台面,所以對數據結構方面的知識水得跟渣一樣。第一個比較像
樣的程序是大二下做的學生管理系統,那是當時的C語言課程設計題目,當初覺得這玩意好復雜啊,為此還又
把譚浩強的《C語言程序設計》看了一遍,把C語言基礎鞏固了一下,記得寫這個程序的時候數據結構用的還是
數組,沒有用鏈表,因為老師不要求用鏈表,我也覺得鏈表太復雜,還是數組簡單。就這樣,我用最原始的C語
言基礎知識碼了3天把這個小程序碼完,而同學都是抄學長的,或者搞不定的,當時那個成就感啊,覺得自己的
C語言水平已經到家了,感覺自己編程水平很牛了,各種飄飄然......現在想想當初真是好像,其實這東西沒一點
技術含量,沒有高級點的數據結構 (用的是數組),沒有好的算法(當時排序用的還是選擇排序),代碼風格
也比較挫。
我就這樣晃晃悠悠到了大三上,然后因為想參加我們學校的一個技術團隊,就和另外一個同學報名參加了他們組
織的一個編程比賽,比賽有初賽、復賽和決賽,初賽和復賽我硬靠着扎實的C語言基本功給通過了,這次使用了鏈
表,不過是用的C++中的STL,我並沒有親手實現過一個鏈表,當時覺得這STL真是爽到爆,你啥都不用管,直接
用就好了,就有點質疑這還要學數據結構干啥?初賽和復賽給了我莫大的信心,因為復賽我們隊還排名第2,不過
苦逼是決賽,因為舉辦方為了降低門檻,所以初賽和復賽的題目都沒有涉及太多的數據結構和算法的知識,但決賽
就不一樣了,記得當時進入決賽的7個隊除了我們都是計算機學院或軟院的。決賽題目是個求一個游戲的最優解法。
當時我和我另外一個同學硬是想了6個小時也沒有搞出來。其實那個題目的主要是應用BFS算法搜索最少路徑數。
是個典型是BFS算法題,但當時連BFS為何物都不清楚,慘痛的教訓!
大三上是個忙碌的學期,因為本專業課程太多,也沒有時間去學《數據結構》這門課,直到了大三下,也就是
這個學期,才有時間來好好研究一下。因為我C語言的基礎還不錯,所以看書的時候我就將每個ADT的基本操
作都自己實現了一遍,而且將書中算法的偽代碼都自己用C語言實現了,感覺這本書講數據結構還是很清楚的,
主要介紹了鏈表、棧、隊列、樹和圖,我感覺樹和圖算是比較難的,但基本都是以鏈表為基礎,這本書關於算
法的介紹不多,Weiss 的《數據結構與算法分析》很值的一看,這本書可以與《數據結構》一書互補。很多人
說《數據結構》沒有《數據結構與算法分析》不好什么的,我覺得有些片面了,看了之后可以很明顯發現其實
兩本書的側重點是不同的,《數據結構》比較重基礎,每一種基礎的數據都講的很清楚,代碼也給的比較多,
而《數據結構與算法分析》則比較重算法分析及全面性,書中介紹了很多高級的數據結構,但對於基礎的數
據結構的介紹則沒有《數據結構》詳細,入門的話看《數據結構》很不錯。 但之后一定要再看看《數據結構
與算法分析》,要不然可以說只學了一半。
值得一說的就是,國內的計算機專業書很多對於編程風格都比較隨易,比如譚浩強的《C語言程序設計》,代
碼風格實在是差勁,很容易誤導初學者,再看國外的C語言經典之作K&R的《The C Programming Language》,
其編碼風格被人們稱為K&R風格,可以說是經典的代碼風格。《數據結構》和《數據結構與算法分析》也是一
樣,前者風格凌亂,后者則比較統一而且清晰,看着很舒服,所以強烈建議初學者不要盲目模仿書中的代碼風
格,最好是先看一看K&R的《The C Programming Language》,養成好的編碼習慣之后再看國內的書,
這樣不容易被國內書的糟糕的編碼風格誤導!