【簡 介】
題外話:先前有一篇文章叫《用C++模板描述的鏈表、棧、隊(duì)列(聲明與實(shí)現(xiàn))》,當(dāng)時是第一次發(fā)表文章(我才注冊沒幾天),很不成熟,改了又改不說,還弄的老長,不利于閱讀。于是我重寫了一下,并且想做成一個系列,這從我的標(biāo)題可以看出來。
題外話:先前有一篇文章叫《用C++模板描述的鏈表、棧、隊(duì)列(聲明與實(shí)現(xiàn))》,當(dāng)時是第一次發(fā)表文章(我才注冊沒幾天),很不成熟,改了又改不說,還弄的老長,不利于閱讀。于是我重寫了一下,并且想做成一個系列,這從我的標(biāo)題可以看出來。
好,言歸正傳。
本篇為后面一系列文章的序言,旨在說明寫作的目的,以及寫作的風(fēng)格;或者說是為自己可能的錯誤,預(yù)先給個托詞。如果您不想聽我在這廢話,請?zhí)^本篇,直接閱讀后面的文章。但是這樣,我不能保證,您在閱讀的同時,不會罵我白癡。
為什么寫這些文章
這些文章可以說是《數(shù)據(jù)結(jié)構(gòu)(用面向?qū)ο蠓椒ㄅcC++描述)》這本書的讀書筆記,但也不完全是。數(shù)據(jù)結(jié)構(gòu)是計算機(jī)專業(yè)必修課——幾乎每個計算機(jī)專業(yè)的學(xué)生都會推崇他的重要;同時,也是其他專業(yè)轉(zhuǎn)修計算機(jī)專業(yè)的一個難點(diǎn)。
從學(xué)習(xí)的角度來說,嚴(yán)蔚敏的《數(shù)據(jù)結(jié)構(gòu)(C語言版)》是本不錯的書。但是,C語言不是描述的理想工具!稊(shù)據(jù)結(jié)構(gòu)(C語言版)》的前言里是這樣說的:“雖然C語言不是抽象數(shù)據(jù)類型的理想描述工具,但鑒于目前和近一、二年內(nèi),……并增添了C++語言的引用調(diào)用參數(shù)傳遞方式等,構(gòu)成了一個類C描述語言!
從抽象數(shù)據(jù)類型的定義——一個數(shù)學(xué)模型以及定義在該模型上的一組操作——可以看出,面向?qū)ο笳Z言中類的概念和這個定義很接近,加之C語言的普及,用C++來描述于是就成了順理成章的事情。
于是,清華在2002年的考研參考書目中對《數(shù)據(jù)結(jié)構(gòu)》的參考書做了改變,使用《數(shù)據(jù)結(jié)構(gòu)(用面向?qū)ο蠓椒ㄅcC++描述)》(殷人昆等編著,ISBN 7-302-03405-2/TP1845)作為參考書,而實(shí)際上考的也是(廢話,不是那叫誤導(dǎo))。坦白的講,原書把教學(xué)目的和提供實(shí)例的目的搞混了,結(jié)果是個四不象:作為教科書,條理不清晰;提供各個方法的實(shí)現(xiàn),也不是很實(shí)用,相反,重復(fù)建設(shè)太多。至于錯誤,可能有些是筆誤,比如少個友元聲明了,不是繼承而使用別的類的成員函數(shù)沒有指明了;還有一些,就是考慮不夠周全。
不管怎么說,現(xiàn)在不是挑書的時候,你想考清華的計算機(jī)專業(yè)研究生嗎,這本書是你不二的選擇。我發(fā)現(xiàn)讀懂此書的最好方法,就是自己按照書上的思路,以及實(shí)際應(yīng)用的分析,自己重新實(shí)現(xiàn)各種抽象數(shù)據(jù)類型。這樣做還有一個好處,為自己將來積累一點(diǎn)財富。
我的寫作風(fēng)格
編譯器我選用的是VC6,因此,我不保證我提供的代碼在別的編譯器也能通過——從頭到尾只使用了iostream.h,沒有任何別的庫,當(dāng)然更沒有MFC,標(biāo)準(zhǔn)的C++代碼應(yīng)該沒什么問題。全部是手工完成的代碼,沒有使用ClassWizard,主要是不喜歡那些亂七八糟的預(yù)處理和注釋。這樣完成之后,發(fā)現(xiàn)C++的聲明和實(shí)現(xiàn)分開xx.h+xx..ccp這種文檔結(jié)構(gòu)并不招人喜歡——很亂。