本書收集了國家統(tǒng)考(2009~2015年)、985和211重點高校以及科學(xué)院、所340多套碩士研究生入學(xué)“(算法與)數(shù)據(jù)結(jié)構(gòu)”考試試卷的2000多道試題,并給出了參考答案和分析。
本書自2007年再版以來,已過去近8年。為適應(yīng)教學(xué)和碩士研究生入學(xué)考試的變化,編者決定對本書再版。
這次再版做了如下變動:加入了2009~2015年的全國統(tǒng)考試題;刪除了一些已不具典型性的試題,強化了985和211大學(xué)以及科學(xué)院、所的試題;加入了一些重點大學(xué)近年來的考研試題;刪除了絕大部分以Pascal語言描述的試題,保留了個別以Pascal定義數(shù)據(jù)結(jié)構(gòu)的試題,但用C給出了解答;按授課常見的知識點的順序?qū)υ囶}進行了編排,盡量把相似內(nèi)容放在一起;增加了對選擇題和判斷題答案的分析;修正了答案;考慮到算法的多樣性和篇幅限制,只對少數(shù)題給出完整算法,多數(shù)題只給出算法分析提示和核心語句段。像過去的版本一樣,對所有試題都標(biāo)明出處。個別試題只標(biāo)出學(xué)校和年份,沒有具體題號和分數(shù)。全國試題放在相關(guān)章的前面。再版后的試題按題號計是2031題,其中選擇題553道、判斷題313道、填空題350道、應(yīng)用題453道、算法設(shè)計題362道。
由于本書引用了各校真實試題,為尊重原題,除極個別情況外,對試題中的術(shù)語和變量未作校正。例如,鏈表指針域next和link,變量n和N,生成樹和跨接樹,遍歷和周游,等等。還應(yīng)指出,有個別試題(包括全國統(tǒng)考試題)在敘述上不夠嚴格,編者給予了說明。
編者對全國試題進行了深入分析。由于四門課程一張試卷,數(shù)據(jù)結(jié)構(gòu)占45分,很難涵蓋數(shù)據(jù)結(jié)構(gòu)的各章。選擇題10道,占20分(有6年是11道,占22分);應(yīng)用題2道,占25分,其中算法題至多占15分。試題在各章的分布詳見附錄A。
數(shù)據(jù)結(jié)構(gòu)作為一門課程,幾十年來一直在發(fā)展中。描述算法的語言一直在變化,從Knuth的算法描述語言,到Pascal語言,再到類C語言,近年又出現(xiàn)了用C++和Java語言描述的教材。編者認為,數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)知識沒有太大變化,教材涵蓋的內(nèi)容基本沒有變化,基本算法沒有變化。對具體問題用哪種語言描述,只是描述工具不同,解決問題的算法思想是一樣的。研究7年來國家統(tǒng)考、67所高等院校和研究院、所的340多套試題,編者發(fā)現(xiàn)試題重復(fù)量很大,20年前的試題至今仍在重復(fù)使用。很多國家統(tǒng)考試題都可以在本書中找到原題或類似題。編者強調(diào)掌握數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)知識和一些重要的算法,這對學(xué)好數(shù)據(jù)結(jié)構(gòu)課程和取得更好的考研成績是非常重要的。
對于學(xué)生如何使用本書,我們給出如下建議。在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)課程時,要同步完成選擇題、判斷題和應(yīng)用題,部分完成填空題和算法設(shè)計題。考研的學(xué)生,要在本課程結(jié)束后的假期做完算法設(shè)計題。即使寫不完全部代碼,至少要把各題的算法思想搞清楚。要特別重視算法填空題中的填空,這部分內(nèi)容對學(xué)生的算法設(shè)計訓(xùn)練很有益處。
2009年,國家對碩士研究生入學(xué)計算機學(xué)科專業(yè)基礎(chǔ)綜合進行全國統(tǒng)考,后來,國家允許一些院校對碩士研究生入學(xué)考試的計算機專業(yè)課實行自主命題。某些學(xué)校將150分的專業(yè)考試都給了數(shù)據(jù)結(jié)構(gòu),足見數(shù)據(jù)結(jié)構(gòu)課程的重要性。鑒于此,本書選題基本涵蓋了數(shù)據(jù)結(jié)構(gòu)課程的全部內(nèi)容,除了國家統(tǒng)考大綱規(guī)定的內(nèi)容外,還包含目前國家統(tǒng)考大綱中不包括的串、數(shù)組和廣義表、動態(tài)存儲管理、外部排序和文件等內(nèi)容。學(xué)生在備考時,要特別注意所考學(xué)校對數(shù)據(jù)結(jié)構(gòu)內(nèi)容方面的要求。
感謝讀者多年來對本書的肯定,這是編者再版本書的動力;感謝機械工業(yè)出版社華章公司的溫莉芳女士和朱劼女士,她們對本書試題的選擇提出了有益的建議和具體要求;感謝遲振春女士和朱秀英女士的辛勤編輯工作。
本書自出版以來,深受讀者喜愛,被評為“2008年度暢銷榜TOP50”,成為眾多考研讀者的必備參考書。編者雖已盡最大努力,但是書中難免還會有缺點和錯誤,懇請讀者批評指正(陳守孔郵箱:skcnmu@163.com)。
編 者2015年1月于珠海第2版前言自《算法與數(shù)據(jù)結(jié)構(gòu)考研試題精析》第1版出版以來,得到了讀者的好評。為了反映近幾年考研試題的變化,更好地為讀者服務(wù),編者對本書進行了全面修訂。
首先是對試題進行了增刪,刪除了400多道試題,替換了200多道試題,按編號計算再版試題共1659題,其中算法設(shè)計327題。不再設(shè)立“類似本題的敘述”這部分內(nèi)容,每題都是單獨編號。對參考答案進行了審核,盡量做到答案準(zhǔn)確、簡練。
在準(zhǔn)備再版的資料時,編者再次印證了“數(shù)據(jù)結(jié)構(gòu)的考研試題重復(fù)量很大”的結(jié)論。在收集的近幾年的試題中,絕大部分試題都可在本書第1版中找到,尤其是基礎(chǔ)知識題,有些試題的敘述完全一樣。由此可以看出,弄懂了本書的試題,無疑將對考研有很大幫助。
通過整理這幾年的試題,編者還發(fā)現(xiàn),幾乎所有院校都突出了對基礎(chǔ)知識的考查。本書中各章的第一到第四部分就屬于基礎(chǔ)知識。過去,個別院校的試題過于側(cè)重算法設(shè)計,而沒有基本概念和基本知識。現(xiàn)在大多數(shù)院校的碩士研究生考試將專業(yè)課整合為一張試卷(占150分)(少數(shù)院校仍單獨考核數(shù)據(jù)結(jié)構(gòu)),其中包括兩門課程或三門課程的內(nèi)容。數(shù)據(jù)結(jié)構(gòu)所占的分數(shù)少則50分,多則90分,并且基礎(chǔ)知識占多數(shù),一道算法設(shè)計題占20分以上的現(xiàn)象已很少見。所以,編者希望讀者,特別是考研的學(xué)生,應(yīng)該加強基礎(chǔ)知識的學(xué)習(xí)。
為了節(jié)省篇幅,避免在每道試題解答中重復(fù)定義所用數(shù)據(jù)結(jié)構(gòu),在本書附錄中將給出所用的數(shù)據(jù)結(jié)構(gòu),試題解答中將直接使用。
編者欣喜獲悉,許多教師將本書作為教學(xué)參考書和考試的題庫,考研學(xué)生通過學(xué)習(xí)本書大大提高了考研的成績,我們期望本書在教學(xué)中發(fā)揮更大作用。
盡管我們作了很大努力,但由于水平有限,書中難免會有缺點錯誤,懇請讀者批評指正。
編 者2007年3月第1版前言“算法與數(shù)據(jù)結(jié)構(gòu)”課程是高等學(xué)校計算機科學(xué)與技術(shù)專業(yè)的一門重要的綜合專業(yè)基礎(chǔ)課,近年來也成為非計算機專業(yè)的必修課或選修課。在以往的碩士研究生入學(xué)考試中,該課程是計算機類專業(yè)的必考科目,也是相關(guān)專業(yè)的考試科目。
編者多年來在大學(xué)講授“算法與數(shù)據(jù)結(jié)構(gòu)”課程。在教學(xué)中感到,學(xué)生理解課程的概念和書本知識并不困難,一旦涉及解決具體問題,特別是編制算法,往往無從著手。為了加強學(xué)生對本課程基本概念和基礎(chǔ)知識的理解,特別是加強對編寫算法的訓(xùn)練,我們編寫了本書。
本書從編排上分三部分。第一部分簡要復(fù)習(xí)數(shù)據(jù)結(jié)構(gòu)各章的重點,第二部分是編者收集的自1992年以來國內(nèi)68所重點高校和科學(xué)院、所300多套碩士研究生入學(xué)“算法與數(shù)據(jù)結(jié)構(gòu)”考試試卷的1800多道試題,第三部分給出了參考答案和分析。
本書的各章名稱與《算法與數(shù)據(jù)結(jié)構(gòu)(C語言版)》教材相同。每章分選擇題、判斷題、填空題、應(yīng)用題和算法設(shè)計題五部分。前四類題屬于基礎(chǔ)知識。選擇題多是單選,也有少數(shù)是多選,編者直接給出參考答案;判斷題是判斷對錯,除給出參考答案外,還對個別題給予了解釋;填空題有概念填空、計算填空,值得注意的是有些院校的算法(程序)填空,即填上幾個關(guān)鍵語句,使之成為完整算法(程序),這類題要求較高;應(yīng)用題有的回答基本概念和基礎(chǔ)知識,較多的是手工模擬算法,這部分占的比例較大;算法設(shè)計是本書重點,占的篇幅最大,除比較簡單的題外,多數(shù)題都按題目分析、算法設(shè)計、算法討論三部分展開。算法設(shè)計中除題目要求必須用PASCAL語言描述的外,一律用類C語言描述。算法描述中涉及的類型定義和數(shù)據(jù)結(jié)構(gòu)基本取自本書的配套教材《算法與數(shù)據(jù)結(jié)構(gòu)(C語言版)》,為節(jié)省篇幅,本書不再重新定義而直接使用。
試題的選取原則是:覆蓋教材各章節(jié),兼顧重點章節(jié);主要選名牌院校的考題;同類型試題解答一個,列出類似試題,多數(shù)未作解答。列出類似題的目的之一,是引起學(xué)生對該類題的重視,考題重復(fù)率高也從側(cè)面說明了該類題的重要性。由于本書收集的是全國各高校和科學(xué)院、所的試題,加之各校教材不同,所以在題目的敘述上有很大差異。甚至所用名詞、概念也不相同。語言描述上有PASCAL語言、類C語言、框圖和偽碼等,敘述及算法描述中的大小寫不是很統(tǒng)一。我們盡量尊重原題,為保持本書風(fēng)格大體一致,對部分術(shù)語進行了統(tǒng)一。另外,在每道題后都注明了題目出處,例如【清華大學(xué) 1997 三(10分)】的含義是本題選自清華大學(xué)1997年碩士研究生數(shù)據(jù)結(jié)構(gòu)試題第三題,試題分數(shù)是10分,有的還指出大題中的小題。對于類似題,個別的也作了簡單解答。
試題也按教材分11章列出。但試題內(nèi)容具體分到哪章,其劃分并不唯一。例如,線性表的問題,可以放在第2章,也可能因其用順序存儲結(jié)構(gòu)實現(xiàn)使用了數(shù)組而放到第5章,也可能因排序而放到第10章,甚至因用順序查找而放到第9章。本書各章相互獨立,在使用本書時,可以順序?qū)W習(xí),也可以根據(jù)需要直接選擇某章。
為了增大本書的信息量,在保持算法易讀性的前提下,盡量使用多語句行,盡量減少圖(使用表格代替圖形)。
本書是很多人的勞動結(jié)晶。計算機學(xué)院的學(xué)生購買了試題,并進行了文字輸入。寧方美、田相慶、龐圣波、王景波等同學(xué)對輸入的試題進行了校對。范策、孟佳娜、盧云宏等老師對算法提出了一些建議,編者對所有幫助編寫本書的同志表示衷心的感謝。在成書過程中,還得到了機械工業(yè)出版社的支持和幫助,在此表示衷心的感謝。
胡瀟琨老師編寫了本書的第10章,并做了試題歸類等工作。李玲老師編寫了本書的第1章,繪制了大量圖表,并核查了部分算法。本書中除第1章、第10章外的其余內(nèi)容均由陳守孔老師編寫。
我們盡全力保證本書的質(zhì)量,但由于水平有限,加之時間緊張,書中肯定會有缺點和錯誤,特別是算法的編寫很難保證是優(yōu)化的。編者誠懇地期望讀者給予批評指正。
編 者2004年4月于煙臺大學(xué)
第3版 前言
第2版 前言
第1版 前言
第一部分 復(fù)習(xí)綱要
第1章 概論
第2章 線性表
第3章 棧和隊列
第4章 串
第5章 數(shù)組和廣義表
第6章 樹和二叉樹
第7章 圖
第8章 動態(tài)存儲管理
第9章 集合
第10章 排序
第11章 文件
第二部分 試題部分
第1章 概論
第2章 線性表
第3章 棧和隊列
第4章 串
第5章 數(shù)組和廣義表
第6章 樹和二叉樹
第7章 圖
第8章 動態(tài)存儲管理
第9章 集合
第10章 排序
第11章 文件
第三部分 參考答案
第1章 概論
第2章 線性表
第3章 棧和隊列
第4章 串
第5章 數(shù)組和廣義表
第6章 樹和二叉樹
第7章 圖
第8章 動態(tài)存儲管理
第9章 集合
第10章 排序
第11章 文件
附錄A 2009~2015年全國碩士研究生入學(xué)計算機學(xué)科專業(yè)基礎(chǔ)綜合試題在教材各章中的分布
附錄B 本書所選試題在教材各章中的分布
參考文獻