嚴蔚敏 的 《數據結構(C語言版)》 這本書在豆瓣評分為什麼不高?

比如演算法導論圖文並茂,原理解析,方便理解 9分以上

但是嚴蔚敏這本書評分竟然如此之低——7.1分,因為它是教材嗎?是因為這本書是國產的嗎?
是其言語抽象生澀,很不方便理解嗎? —— 比如我是通過這本書 扣 扣 扣 明白了 最短路,最小生成樹,KMP,B tree樹 (這麼簡潔個東西,書上講的這麼繁瑣)


看到《大話數據結構》的作者 @程傑 老師關注了這個問題,我來胡說兩句。

我是在學數據結構這門課之前買的《大話》,而學校發的教材正是嚴蔚敏版本。

在學習這門課程的時候經常聽到周圍的同學抱怨說這門課難學,還在糾結頭指針、頭結點和第一結點的問題,還在為malloc是什麼東西而苦惱,當課程內容上到隊列左右的時候,我基本已經學差不多了。

因為我看了《大話數據結構》(好硬的軟文即視感)。

不吹不黑,我在上諸如大學物理這種課的時候,就捧著大話當小說讀,相比嚴版,簡直輕鬆有趣,引人入勝,概念講得清晰有條,例子也都很生動,讓人一下就能理解所要闡述的內容。

反觀嚴版:

  • 內容死板就算了,關鍵它排版難看啊!和插圖豐富,代碼區域醒目的大話相比天壤之別。
  • 代碼風格就不提了,關鍵還很任性啊!明明用的是C語言,那就寫好點不行嗎?諸如變數聲明這種東西丟三落四的,然後還硬要跟你說這是「偽代碼」,偽你妹啊!不知道我們有很多同學上機實驗直接照著書上抄的嗎?!人家用VC++6.0調了半天發現是你書上漏寫了個int a;能不罵娘嗎?
  • 書寫的爛但是學校還按照原價收書本費啊!

學到課程後期,我發現周圍大多數同學就好像逼不得已才吃屎一樣,硬著頭皮啃這本書,但是他們就是不知道去找優秀的教材看啊。

當然,經過學校的一路洗禮,從本校老師編寫的比譚浩強還要有毒的C語言,再到本校老師全盤照抄的同濟版高數教程,同學們一路屎吃過來,也就忘卻了大米飯的味道。

於是繼續埋頭硬啃,課程結束後,打的嗝都瀰漫著屎味。於是乎一說什麼表什麼樹概念都知道,要求用代碼實現就直哆嗦,寫出的代碼人不人鬼不鬼,一個程序里(*L).elem;和L-&>elem;傻傻分不清,到了最後,當然怪你的書不好啦!

所以說嚴書好的,那也多是被一路洗禮過來了可憐人。

當然,我在這裡吹噓了一通大話,並不是說這本書就是數據結構界的NO.1,比此書好的也多了去了:

  • 數據結構與演算法分析 (豆瓣) 9.2分
  • 演算法 (豆瓣) 9.3分
  • 演算法導論 (豆瓣) 9.4分

大話這本書也許會存在著各種各樣的問題,如果你沒有發現,那你應該為自己感到擔憂,如果發現了,那麼恭喜你,那趕快去讀上面這三本書吧!


因為大話也只是起到一個引導的作用,讓你遠離學校枯燥的教材,對數據結構這門課產生濃厚的興趣。但為了深入學習,還是建議使用上面三本書。


再談到如何學習數據結構這門課,傳送門:

  • 如何學習數據結構? - C(編程語言)
  • 怎麼學好數據結構? - 演算法
  • 怎樣學好數據結構和編程? - 程序員

我就不再獻醜了。


所以最後卒章顯志:嚴書很爛啦!大家快換書!


作為一個跨考軟體工程考研生,客觀點講,嚴老師的書,難,毋庸置疑,我當時買到書後翻了幾頁就扔一邊了。
我c的基礎還不錯但是無法從這本書入門,後來買了天勤的數據結構,以及程傑老師的《大話數據結構》,這兩本書才逐漸將我帶入門,很感謝!
然後我不甘心放棄嚴書,可能內容很爛,可能內容很好,不仔細研讀就放棄肯定沒有結論。
因為是跨專業,本專業一直沒學數據結構,然後大三的我重新抱著嚴書去一節一節蹭課,下課後人都走了我就翻出三本數據結構書對比著學,大話天勤看懂了,甚至做一部分習題之後然後回頭看嚴書,清楚的記得當時嚴書給我當頭一棒的歸併排序最先理解了,然後逐漸的,天勤和大話就像火箭助推器一樣推進我讀嚴書。
當自己真正讀過來,才明白,嚴奶奶的書其實很好,只不過她給當代大學生的定位有點高了,寫的有點跳躍,需要你去習慣。
對於偽代碼,這好像是吐槽最多的,偽代碼不是你上機的代碼參考,而是對於一個演算法的架構思想的傳遞,只要你c能認真學好,你有能力將嚴書的偽代碼轉換成實用的c程序。熟練到什麼程度,你看到GetElem() ListInsert(),腦海中能清楚的想到完成該操作所需要的程序步驟,這算是一項基本功,越基本的東西有時候反而越難。
最後,國內大部分數據結構出版書籍的作者都表示曾經也是在嚴老師的數據結構中摸爬滾打走過來的,天勤的書中明確表示,學好天勤數據結構只能達到考試要求的95%-105%,而嚴書學好之後能達到130%的要求,我想這應該是有道理的。總之,嚴蔚敏老師的《數據結構》以及著名的《數據結構與演算法分析》是達到更高層次要求,至於各大網站評分,有時候實在是主觀因素太多,並沒有資格作為評判一本書優良的標準。


  1. 首先對於高票答案 @thinKnight 中提到的幾本書,我說下個人看法:《大話數據結構》和《演算法》適合新手,而《數據結構與演算法分析》和《演算法導論》並不適合新手,不要盲目嘗試。文末說嚴蔚敏《數據結構》很爛,我並不盲從,也許是因為一千個讀者,就有一千部《金瓶梅》吧。
  2. 個人認為,嚴蔚敏的《數據結構》為譚浩強的《C語言程序設計》背了黑鍋,而譚浩強的《C語言程序設計》為高校一線教師的教學水平(不是學術水平)背了黑鍋,而高校的一線教師又為學生的自學能力背了黑鍋,而學生們又為我國的教育體制背了黑鍋。
  3. 我不去揣測批判嚴蔚敏《數據結構》的人是出於什麼立場,也不關心他到底有沒有讀完全書,以我個人的學習經歷來看,我對這本書還是給好評的。
  4. 我認為這本書的優點有:結構合理,條理清晰,敘述權威。缺點是C語言與C++還有個別偽碼的混合導致的代碼的可讀性下降(其實你熟悉一門編程語言——不限於C語言——之後,發現偽代碼更適合你也說不準)。
  5. 我收到很多人反饋這本書不友好,很難啃,究其原因其實只有一個:C語言沒學好,尤其是指針的運用不熟練。還有就是,新手總是希望得到一個可運行的程序去研究,對於一個不能直接運行的代碼段,有天生的畏懼。
  6. 鑒於目前計算機考研的統考專業課數據結構指定的參考書籍仍然是嚴蔚敏這本書,我對此書的學習方法提兩點建議:第一是學好C語言,尤其是指針,第二是真機調試,不要僅限於書面功夫。我記得我剛開始學這本書前,先認真地學習了C語言,參考的書籍是《C語言程序設計現代方法》和《C Primer Plus》,儘管如此,在面對數據結構開頭的鏈表時,還是遇到了很多麻煩。所幸我堅持了下來,在學習數據結構的同時,也鞏固了C語言的指針與結構這部分高級語法。
  7. 值得一提的是,嚴蔚敏這本書配套的習題冊也很不錯,值得一看,只看習題部分就行,那些實驗部分可以略去。關於這本書的源碼以及配套習題冊上習題的解答,我已經全部(一小部分不會做的已經標明)貼到了網上,源碼採用C語言編寫,並以圖片的形式給出,希望可以幫助到同道中人。鏈接如下(建議先讀使用說明):《數據結構-C語言版》(嚴蔚敏,吳偉民版)課本源碼+習題集解析使用說明 - 迷路的國王 - 博客園
  8. 結語:老生常談,任何一門課,學會它的終極奧秘就是堅持,遇到問題,要多百度,多谷歌,迎難而上才能修成正果。

如果題主說的是真的的話,我驚嘆的反而是,為什麼這本書在豆瓣的評分如此之高。。。

曾經有考研的同學找我討論過書上的一些題目,我忍住了向他們吐槽。

BTW:曾經在Youku上搜到過嚴蔚敏奶奶講KMP的視頻,太墨跡了,根本講不到點子上。。。


泰坦尼克沉沒後,很多人霸佔了本來可以承載2個人的木板飄在海面等待救援,在沒有淡水的情況下,jack強撐了數日,最終喝尿補水求活。後來終於被救起後,jack說的第一句話就是「沒有尿就沒有我」


這就是豆瓣和知乎的區別,豆瓣是文藝宅的聚居地,知乎是理科宅的避難所。


我讀過嚴蔚敏的 &<數據結構&>
也讀過&<數據結構與演算法分析&> 機械工業出版社的
這兩本書的內容有很多交集

平心而論, 第二本的質量好的多

ps, 這兩本書的代碼水平實在不在同一層級


用mu,nu,tu來命名的書,有7.1分已經算是很高了。


7.1已經很高了,很多國內教材都拿不了及格分


書這個東西呢,也是有分類的。
有的叫做入門教材,適合新手去看,定性的去理解一個東西的概念。
有的叫做參考書,適合入門後擴展思路,構建知識體系。
有的叫做字典,適合發現不理解的內容時候查閱。
這本書放在不同分類,其價值自然不同。
我在
老闆總是在說微軟的他認識的一個人每年只寫 2000多行的代碼。讓我們也盡量少寫代碼。得如何跟他說情況?
裡面提到過,為什麼三十行代碼和三千行代碼解決同一個問題都可以,但是水平則完全不同。
代碼只是實現業務的工具,而不是洋洋洒洒抒發感情的東西。
合適的水平看合適的書,保持學習慾望才是最重要的。


嚴奶奶那本除樂教數據結構同時還訓練抗擊打能力,意志力,


其他答主都講了不少缺點,但作為一本已被國內各大院校計算機專業使用二十年,經久不衰的教材,沒有一定的優勢是不可能的。在我看了,這是一本缺點和優點同樣突出的書。

缺點:1。嚴奶奶畢竟是生在舊社會,長在紅旗下,都快80高齡的人了,而這本書也是就是年代寫的,所以說,本書的行文手法、語言風格跟現在差距很大,而且絕對的教材范,高大上,逼格十足,雖說重點核心都講了,但是細節不夠,沒有類比,讓人難以理解。
2。全書演算法均是是用偽代碼寫的,這對於只學習過程序設計基礎的大一大二生來說,真是不能接受,要知道之前上機課就是把書上代碼打到計算機上,改改錯,編譯,完事。這樣無疑給基礎不太好的同學帶來麻煩,好多都是學到這課就放棄治療了。

用這本書自學入門的確是比較困難。
但如果過了入門那關的話,這本書的優勢就顯現出來了。

優點:1:這是一本非常輕薄的書,前面答主推薦的那些書無疑是非常好的書,我在入門的時候基本上用的就是那些,但每一本都是死沉死沉的大部頭。2,這是一本非常簡練高效的書,每個演算法的核心代碼和解釋都有,易於翻閱查找,比大部頭翻了十幾頁還找不到重點高效多了。

總結:這是一本不太適合入門的書,入門的時候不妨找一些機械工業出版社外國經典教材入門,並在此基礎上完成重要代碼的實現。入門後,這本書是一本不錯的,值得再次閱讀、翻閱查找、收藏的書。

個人覺得這本書比國內市面上太多教材要用心多了,應該在8分以上。


最近準備考研複習數據結構,這本傳說中的考研教材我一章都沒看完就看不下去了。。。


這是我們的教材,老師上課晦澀難懂,看書更是如此,於是乎,最短路徑,哈夫曼樹,關鍵路徑,二叉樹什麼的,我都是在CSDN等論壇上面看懂的。


這本書,我當年基本上是強行背下來的,現在想起來還是想罵人,真不知道這本書寫的什麼玩意,要寫偽代碼,就好好寫偽代碼好了,要寫代碼,就把完整的代碼附上好不好,整本書都相當的不倫不類,當時學校只安排了C的課,誰知道你那本書裡面一會-&>, 一會*,搞毛啊,連個定義都不給,完整的結構也不給,讓人看的雲里霧裡,有時候我都覺得譚浩強的書都比它強


這種書的定位就不是教材。。而是為了展露作者深厚的知識水平和高深的學術思想的。。。。寫它的目的就不是為了讀懂啊。。


嗯哼?偶然看到。
我想說嚴版數據結構看不懂的人能看懂演算法導論?
本書作為入門不太好。
入了門再來看這本書你會明白這是國內數據結構教材集大成者。
和外國的教材相比,還是有距離的。但是在國內絕對是一流,去看看多少教材的參考書目第一名就是本書。
不要過分貶低國內著作。外國也不是隨便一寫都能比得上高德納的計算機程序設計藝術的。


我曾經嘗試拿它入門,結果讀了一章就讀不下去了。完全不知道她要講什麼。
入門的話不如《大話數據結構》通俗易懂,進階不如《演算法導論》、《演算法》鞭辟入裡。能評7.1分不錯了。


對著這本書上偽代碼直接敲然後找 bug 的同學也沒有必要再去買別的書學數據結構了。。。


《大話數據結構》8.1
《數據結構與演算法分析》c++描述 8.5

7.x夠高了


推薦閱讀:

「數據結構」和「數據類型」兩個概念的本質是什麼,區別與聯繫是什麼?
自學看書煩了你們怎麼應對?很煩躁
遊戲場景管理的八叉樹演算法是怎樣的?
如何學習數據結構?

TAG:數據結構 | 豆瓣評分 |