數(shù)據(jù)結(jié)構(gòu)與算法

出版時間:2009-2  出版社:清華大學出版社  作者:唐寧九 等主編  頁數(shù):473  

前言

數(shù)據(jù)結(jié)構(gòu)與算法內(nèi)容豐富,包含了計算機科學與技術(shù)的許多重要方面。分析和解決問題的思路和方法新穎,技巧性強,對學生的計算機軟件素質(zhì)的培養(yǎng)作用明顯。培養(yǎng)和訓練學生選用合適的數(shù)據(jù)結(jié)構(gòu)與算法設計方法編寫質(zhì)量高、風格好的應用程序,并具備評價算法優(yōu)劣的能力至關重要。本書采用C++面向?qū)ο蟮挠^點介紹數(shù)據(jù)結(jié)構(gòu)與算法,并使用模板程序設計技術(shù),與采用面向過程的傳統(tǒng)觀點相比優(yōu)勢較大,使所設計的程序更容易實現(xiàn)代碼重用,在提供通用性和靈活性的同時,又保證了效率。本書已將面向?qū)ο蟪绦蛟O計的思想融合到數(shù)據(jù)結(jié)構(gòu)與算法中,讀者通過學習可進一步提高面向?qū)ο蟪绦蛟O計的能力。全書共分為11章。第1章是基礎知識,介紹了基本概念及其術(shù)語,抽象數(shù)據(jù)類型的實現(xiàn),還討論算法的概念和算法分析的簡單方法。作為預備知識,讀者應具有一定的C++程序設計的基礎。但是為了降低讀者的門檻,本章還介紹了要用的C++的主要知識點,并介紹了實用程序軟件包。第2章引入線性表,詳細討論線性表的順序存儲結(jié)構(gòu)與鏈式存儲結(jié)構(gòu)。在討論鏈式存儲結(jié)構(gòu)時,首先仿照傳統(tǒng)方法實現(xiàn)線性表,然后在此基礎之上,在鏈表結(jié)構(gòu)中保存當前位置和元素個數(shù)。這樣,在難度增加不大的情況下提高算法效率,使學生逐步體會改進算法的途徑與方法。第3章介紹了棧和隊列,討論了棧和隊列的順序存儲結(jié)構(gòu)與鏈式存儲結(jié)構(gòu),用棧實現(xiàn)了表達式求值。通過學習能掌握各種棧和隊列的實現(xiàn)與使用方法,對后繼課程(如操作系統(tǒng)原理和編譯原理)的學習打下良好的基礎。本章還討論了優(yōu)先隊列,使隊列應用更加廣泛。第4章介紹串,詳細討論了串的存儲結(jié)構(gòu)與模式匹配算法,為開發(fā)串應用(如實現(xiàn)文本編輯軟件)軟件打下堅實的基礎。第5章介紹數(shù)組和廣義表,詳細討論了數(shù)組,特殊矩陣,稀疏矩陣和廣義表的存儲結(jié)構(gòu)及實現(xiàn)方法,首次提出了廣義表的使用空間表存儲結(jié)構(gòu),并使用廣義表實現(xiàn)了m元多項式的表示。第6章介紹了樹結(jié)構(gòu),討論了二叉樹、線索二叉樹、樹、森林及其哈夫曼樹的結(jié)構(gòu)及其實現(xiàn),還應用哈夫曼編碼實現(xiàn)了壓縮軟件。第7章介紹圖結(jié)構(gòu),實現(xiàn)了圖的常用存儲結(jié)構(gòu),并討論了圖的相關應用,實現(xiàn)了相應算法(如求最小生成樹的Prim算法與Kruskal算法,求最短路徑的Dijkstra算法與Floyd算法)。第8章介紹查找,討論了靜態(tài)查找表、動態(tài)查找表與散列表,還討論了二叉排序樹、二叉平衡樹與B樹,并實現(xiàn)了所有算法。第9章介紹排序,以簡潔方式實現(xiàn)各種排序算法,還測試了各種排序算法的實際運行時間。第10章介紹了文件,討論了主存儲器和輔助存儲器,以及各種常用文件結(jié)構(gòu),還特別介紹了在數(shù)據(jù)庫中經(jīng)常采用的VSAM文件,對讀者研究與學習數(shù)據(jù)庫有一定的幫助。第11章介紹了算法設計技術(shù)、分析技術(shù)與可計算問題,詳細討論了各種算法設計技術(shù)(如貪心算法、分治算法、回溯算法)的使用方法并實現(xiàn)了各種算法,對算法分析技術(shù)和可計算問題也進行了深入淺出的討論。對讀者的算法設計和分析的理論和實踐都有極大的幫助。對于初學者,要完全獨立編寫數(shù)據(jù)結(jié)構(gòu)與算法的代碼是相當困難的。因此,本書討論的數(shù)據(jù)結(jié)構(gòu)與算法都加以實現(xiàn)并進行了嚴格測試,提供了完整的測試程序,讀者可參考這些測試程序編寫相關算法。但是,如果只會使用已有的數(shù)據(jù)結(jié)構(gòu)編寫簡單的程序也不利于讀者對數(shù)據(jù)結(jié)構(gòu)與算法的深入理解,以及研究新數(shù)據(jù)結(jié)構(gòu)與算法的能力。因此,本書的習題不但包括了基本練習題,還包括了仿照書中數(shù)據(jù)結(jié)構(gòu)構(gòu)造新數(shù)據(jù)結(jié)構(gòu)的題目,或改造已有算法的題目,這樣使讀者具有構(gòu)造新結(jié)構(gòu)及改造或改進算法的能力。本書各章還提供了實例研究,主要提供給那些精力充沛的學生深入學習與研究,這些實例包括對正文內(nèi)容的補充(例如第9.9.3小節(jié)中的用堆實現(xiàn)優(yōu)先隊列),讀者可能感興趣但感到無從下手的算法(例如第1.6.2小節(jié)中的計算任意位數(shù)的π) 、離散數(shù)學中學習的著名算法的實現(xiàn)(例如第7.7.1小節(jié)中的周游世界問題——哈密爾頓圈與第7.7.2小節(jié)中的一筆畫問題——歐拉問題)以及應用所學知識解決實際問題(例如第6.8.2小節(jié)中的Huffman壓縮算法)。通過讀者對實例研究的學習,可提高實際應用數(shù)據(jù)結(jié)構(gòu)與算法的能力。當然,這可能有一定的難度,但應比讀者想象的更易學習與掌握?,F(xiàn)在,各校在開設“數(shù)據(jù)結(jié)構(gòu)與算法”課時都安排有上機實驗課時,因此本書每章都安排有上機實驗題,這些實驗題不但包括讀者感興趣的實驗(例如紙牌游戲—— “21點”) ,數(shù)據(jù)結(jié)構(gòu)與算法基本應用的實驗(例如編寫一個程序讀入一個字符串,統(tǒng)計字符串中出現(xiàn)的字符及次數(shù),然后輸出結(jié)果,要求用一個二叉排序樹來保存處理結(jié)果,結(jié)點的數(shù)據(jù)元素由字符與出現(xiàn)次數(shù)組成,關鍵字為字符),對課本數(shù)據(jù)結(jié)構(gòu)與算法改進的實驗(例如改進本書實現(xiàn)的求最小生成樹的Kruskal算法,用最大優(yōu)先隊列來實現(xiàn)按照邊的權(quán)值順序處理,用等價關系判斷兩個結(jié)點是否屬于同一棵自由樹以及合并自由樹),還包括了解決實際問題的實驗(例如采用散列文件實現(xiàn)電話號碼查找系統(tǒng)),通過實驗能極大地提高讀者對數(shù)據(jù)結(jié)構(gòu)與算法的應用能力。為了進一步提高讀者運用數(shù)據(jù)結(jié)構(gòu)與算法的水平,現(xiàn)在很多學校還開設了“數(shù)據(jù)結(jié)構(gòu)與算法課程設計”。為此,本書的附錄提供了11個課程設計項目,這些項目包括了接近實際課題的題目(例如開發(fā)排課軟件與公園導游系統(tǒng))、容易引起讀者興趣的項目(例如理論計算機科學家族譜的文檔/視圖模式)與需要通過查找資料進一步提高的題目(例如采用自適應形式的哈夫曼編碼方案開發(fā)壓縮軟件)。課程設計項目一般都提供功能的擴展方法,基礎較差的讀者可只實現(xiàn)基礎功能,對數(shù)據(jù)結(jié)構(gòu)與算法有興趣的讀者可實現(xiàn)更強的功能,這樣使不同層次的讀者都會有所收獲,通過做這些項目能快速提高讀者解決實際問題的能力。為了盡快提高讀者的學習能力,本書各章還提供了深入學習導讀,包含了本書作者實現(xiàn)相關數(shù)據(jù)結(jié)構(gòu)與算法的最原始思想的資料來源,也包括了進一步學習的參考資料,極大地方便讀者與教師查閱資料。本教材在內(nèi)容組織上特別考慮了讀者的可接受性;在算法實現(xiàn)時,重點考慮了程序的可讀性,為實現(xiàn)更強的功能,一般采用啟發(fā)的方式在習題、上機實驗或課程設計中實現(xiàn),這樣容易培養(yǎng)起讀者的學習興趣,使讀者感到自己具有發(fā)展或改進已有算法的能力,也會使讀者感到自己已達到計算機高手的自信心。本書作者都活躍在教學研究第一線上,同時有的作者還具有深厚的數(shù)學功底。因此,本書不但完成了所有算法的測試程序,對算法分析的相關公式進行了嚴格的數(shù)學推理,還獨立地從數(shù)學上嚴格推出了一種產(chǎn)生泊松隨機數(shù)的算法(見附錄B) 。事實上,用同樣的方法可產(chǎn)生任何離散隨機分布(例如二項分布),本書作者還首次對本書中關于計算任意位數(shù)π的算法作了嚴格的理論推導。本書采用了模板程序設計技術(shù),現(xiàn)在模板技術(shù)已成為現(xiàn)代C++語言的風格基礎,C++98(1998年標準化的C++)提供的標準程序庫中有80%的成分是使用模板機制實現(xiàn)的STL(Standard Template Library,標準模板庫)。而國內(nèi)現(xiàn)階段教學并未重視C++的模板程序設計,書籍資料也不是很多。作者認為在C++中,只要模仿本書算法,讀者會在不知不覺中掌握模板程序設計技巧?,F(xiàn)在來討論一下在國外“數(shù)據(jù)結(jié)構(gòu)與算法”課程上機教學時喜歡采用的STL。實際上,STL是AT&T貝爾實驗室和HP研究實驗室的研究人員將模板程序設計和面向?qū)ο蟪绦蛟O計的原理結(jié)合起來,創(chuàng)造的一套研究數(shù)據(jù)結(jié)構(gòu)與算法的一種統(tǒng)一的方法,現(xiàn)在已成為C++標準庫的一部分。STL提供了實現(xiàn)數(shù)據(jù)結(jié)構(gòu)的新途徑,它將(數(shù)據(jù))結(jié)構(gòu)(即組織數(shù)據(jù)的存儲結(jié)構(gòu))抽象為容器,將之分為3類:序列容器、關聯(lián)容器和適配器容器。通過使用模板和迭代器,STL使得程序員能夠?qū)V泛的通用算法應用到各種容器類上。通過本書作者的研究與了解,STL只覆蓋了數(shù)據(jù)結(jié)構(gòu)中的線性結(jié)構(gòu)和樹結(jié)構(gòu),并沒有覆蓋圖部分。因此,對數(shù)據(jù)結(jié)構(gòu)來講,STL并不完備。同時,如果讀者上機編程都只使用STL解決數(shù)據(jù)結(jié)構(gòu)的相關算法,可能使讀者在數(shù)據(jù)結(jié)構(gòu)編程方面,只會使用STL,而不能獨自設計新數(shù)據(jù)結(jié)構(gòu)。本書采用模板方法實現(xiàn)了書中所有的數(shù)據(jù)結(jié)構(gòu)算法,應比STL更完備。同時,STL中包含的源代碼可讀性差,不適合作為教學使用,本書的算法源程序首要強調(diào)可讀性,使讀者容易接受與模仿,并且讀者可進行改進或修改算法實現(xiàn)。因此,在某種意義上講,本書提供的關于數(shù)據(jù)結(jié)構(gòu)與算法實現(xiàn)的類模板與函數(shù)模板是一種GTL (General Template Library)或OSGTL (Open Source General Template Library) 。讀者也可由作者個人主頁提供的軟件包(具體內(nèi)容請參看附錄C)來進行實際數(shù)據(jù)結(jié)構(gòu)與算法方面的軟件開發(fā)。當然,通過本書的學習,再返回來學習STL的應用,將會達到事半功倍的效果。讀者只要找一本介紹STL的書籍或上網(wǎng)找一些介紹使用STL的文檔,并用STL試著編程即可完全掌握STL的使用?,F(xiàn)在談談有關C++編譯器的問題,在C++之外的任何編程語言中,編譯器都沒有受到過如此重視。這是因為C++是一門非常復雜的語言,以至于編譯器也難于構(gòu)造。我們常用的編譯器都不能完全符合C++標準,以至于本書的部分測試不得不使用條件編譯技術(shù)來適應不同C++編譯器,下面介紹一些常用的優(yōu)秀C++編譯器。(1)  Visual C++編譯器:由微軟開發(fā),現(xiàn)在主要流行Visual C++ 6.0、Visual C++ 2005以及Visual C++ 2005 Express,特點是集成開發(fā)環(huán)境用戶界面友好,信息提示準確,調(diào)試方便,對模板支持最完善。Visual C++ 6.0對硬件環(huán)境要求低,現(xiàn)在安裝的計算機最多,但對標準C++兼容只有83.43%. Visual C++ 2005與Visual C++ 2005 Express在軟件提示信息上做了進一步的優(yōu)化與改進,并且對標準C++兼容達到了98%以上的程度,但對硬件的要求較高。同時,Visual C++ 2005 Express是一種輕量級的Visual C++軟件,易于使用。對于編程愛好者、學生和初學者來說,Visual C++ 2005 Express是很好的編程工具,微軟在2006年4月22日正式宣布 Visual Studio 2005 Express版永久免費。(2)  GCC編譯器:著名的開源C++編譯器。是類UNIX操作系統(tǒng)(例如Linux)下編寫C++程序的首選,有非常好的可移植性,可以在非常廣泛的平臺上使用,也是編寫跨平臺、嵌入式程序很好的選擇。GCC 3.3與標準C++兼容大概能夠達到96.15%?,F(xiàn)已有一些移植在Windows環(huán)境下使用GCC編譯器的IDE(集成開發(fā)環(huán)境),例如Dev-C++與MinGW Developer Studio。其中,Dev-C++是能夠讓GCC在Windows下運行的集成開發(fā)環(huán)境,提供了與專業(yè)IDE相媲美的語法高亮、代碼提示、調(diào)試等功能;MinGW Developer Studio是跨平臺下的GCC集成開發(fā)環(huán)境,目前支持 Windows、Linux和 FreeBSD。根據(jù)作者的實際使用,感覺使用GCC編譯器的IDE錯誤信息提示的智能較低,錯誤提示信息不太準確,還有就是對模板支持較差,對語法檢查較嚴格,在Visual C++編譯器中編譯通過的程序可能在GCC編譯器的IDE還會顯示有錯誤信息。本書所有算法都同時在Visual C++ 6.0、Visual C++ 2005、Visual C++ 2005 Express、Dev-C++和MinGW Developer Studio中通過測試。讀者可根據(jù)實際情況選擇適當?shù)木幾g器,建議選擇Visual C++ 2005.教師可采取多種方式來使用本書講授數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)與算法分析,數(shù)據(jù)結(jié)構(gòu)與算法設計,數(shù)據(jù)結(jié)構(gòu)與算法等課程,應該根據(jù)學生的背景知識以及課程的學時數(shù)來進行內(nèi)容的取舍。為滿足不同層次的教學需求,本教材使用了分層的思想,分層方法如下:沒有加星號()及雙星號()的部分是基本內(nèi)容,適合所有讀者學習;加星號的部分適合計算機專業(yè)的讀者深入學習;加有雙星號的部分適合于感興趣的同學研究,尤其適合于那些有志于ACM競賽的讀者加以深入研究。下面給出了幾種可能的課程安排,建議習題及實驗的主要形式是讓學生編寫并調(diào)試一些程序。開始時程序可以比較短,隨著課程的深入,程序?qū)⒅饾u變大。學生應根據(jù)課堂上所講授的主題同步閱讀課本相關內(nèi)容。學 分大約課時數(shù)內(nèi)  容232選講第1章~~第9章中沒有打星號()及雙星號()的內(nèi)容348第1章~~第10章中沒有打星號()及雙星號()的內(nèi)容464第1章~~第11章中沒有打星號()及雙星號()的內(nèi)容580第1章~~第11章中沒有打星號()及雙星號()的內(nèi)容,選講部分打有星號()的內(nèi)容696第1章~~第11章中沒有打雙星號()的內(nèi)容,選講部分打有雙星號()的內(nèi)容  作者為本書提供了全面的教學支持,如果在教學或?qū)W習過程中發(fā)現(xiàn)與本書有關的任何問題都可以與作者聯(lián)系作者將盡力滿足讀者的要求,并可能將解答公布在作者的教學網(wǎng)站上。另外,在作者的教學網(wǎng)站上還將提供如下內(nèi)容。(1)  提供書中所有算法在Visual C++ 6.0、Visual C++ 2005、Visual C++ 2005 Express、Dev-C++和MinGW Developer Studio開發(fā)環(huán)境中的測試程序,今后還會提供當時流行的C++開發(fā)環(huán)境的測試程序,每種開發(fā)環(huán)境還將提供基本開發(fā)過程的文檔;還提供本書作者開發(fā)的軟件包(包含所有本書所講的數(shù)據(jù)結(jié)構(gòu)與算法的類模板與函數(shù)模板)。2)  提供教學用PowerPoint幻燈片PPT課件。(3)  向教師提供所有習題、上機實驗題與課程設計項目的解答或參考程序,對學生來講,將在每學期期末(第15周~~第20周)公布解壓密碼。(4)  數(shù)據(jù)結(jié)構(gòu)與算法問答專欄。(5)  提供至少8套數(shù)據(jù)結(jié)構(gòu)與算法模擬試題及其解答,以供學生期末及其考研復習,也可供教師出考題時參考。(6)  提供數(shù)據(jù)結(jié)構(gòu)與算法相關的其他資料(例如作者收集的計算任何位數(shù)π的資料,Dev-C++與MinGW Developer Studio軟件,流行免費C++編譯器的下載網(wǎng)址)。希望各位讀者能夠抽出寶貴的時間將建議或意見(當然也可以發(fā)表對國內(nèi)外“數(shù)據(jù)結(jié)構(gòu)與算法”課程教學的任何意見)寄給作者,為我們修訂教材提供重要參考。孫界平、張衛(wèi)華、鄒昌文、王文昌、周焯華、胡開文、沈潔、周德華與歐陽等人對本書做了大量的工作,包括提供資料,調(diào)試算法,以及參與部分章節(jié)的編寫;作者還要感謝為本書提供直接或間接幫助的每一位朋友,由于他們熱情的幫助與鼓勵,激發(fā)了寫好本書的信心以及熱情。在此還要感謝清華大學出版社的編輯及評審專家,他們?yōu)楸緯某霭鎯A注了大量熱情。正是由于他們具有前瞻性的眼光才讓讀者有機會看到本書。盡管作者秉著負責任的態(tài)度編寫這本書,并盡了最大努力,但由于水平有限,書中難免有不妥之處,因此,敬請各位讀者不吝賜教,以便作者不斷提高,提高寫作水平。

內(nèi)容概要

本書結(jié)合C++面向?qū)ο蟪绦蛟O計的特點,構(gòu)建了數(shù)據(jù)結(jié)構(gòu)與算法,對所有算法都在Visual C++ 6.0、Visual C++ 2005、Visual C++ 2005 Express、Dev-C++和MinGW Developer Studio開發(fā)環(huán)境中進行了嚴格的測試,作者教學網(wǎng)站(http://cs.scu.edu.cn/~youhongyue)提供了大量的教學支持內(nèi)容。同時本書配有《數(shù)據(jù)結(jié)構(gòu)與算法(C++版)實驗和課程設計教程》 (ISBN 978-7-302-17503-2)供讀者學習參考?! ”緯卜?1章,第1章是基礎知識,介紹了基本概念及其術(shù)語,并討論了實用程序軟件包;第2章引入線性表;第3章介紹了棧和隊列,用棧實現(xiàn)了表達式求值;第4章介紹串,詳細討論了串的存儲結(jié)構(gòu)與模式匹配算法;第5章介紹數(shù)組和廣義表,首次提出了廣義表的使用空間表存儲結(jié)構(gòu);第6章介紹了樹結(jié)構(gòu),應用哈夫曼編碼實現(xiàn)了壓縮軟件;第7章介紹圖結(jié)構(gòu),實現(xiàn)了圖的常用存結(jié)構(gòu),討論了圖的相關應用,并實現(xiàn)了相應算法;第8章介紹查找,討論了靜態(tài)查找表、動態(tài)查找表與散列表,實現(xiàn)了所有算法;第9章介紹排序,以簡潔方式實現(xiàn)各種排序算法;第10章介紹了文件,討論了各種常用文件結(jié)構(gòu);第11章介紹了算法設計技術(shù)、分析技術(shù)與可計算問題?! ⊥ㄟ^本書的學習,不但能迅速提高數(shù)據(jù)結(jié)構(gòu)與算法的水平,同時還能提高C++程序設計的能力,經(jīng)過適當?shù)倪x擇,本書能作為高等院校計算機及相關專業(yè)“數(shù)據(jù)結(jié)構(gòu)”、“數(shù)據(jù)結(jié)構(gòu)與算法”、“數(shù)據(jù)結(jié)構(gòu)與算法分析”和“數(shù)據(jù)結(jié)構(gòu)與算法設計”等課程的教材,也可供其他從事軟件開發(fā)工作的讀者參考。

書籍目錄

第1章 緒論 1.1 數(shù)據(jù)結(jié)構(gòu)的概念和學習數(shù)據(jù)結(jié)構(gòu)的必要性 1.2 數(shù)據(jù)結(jié)構(gòu)的基本概念 1.3 抽象數(shù)據(jù)類型及其實現(xiàn) 1.4 算法和算法分析?1.5 實用程序軟件包 1.6 實例研究 1.7 深入學習導讀 習題1 上機實驗題1第2章 線性表 2.1 線性表的邏輯結(jié)構(gòu) 2.2 線性表的順序存儲結(jié)構(gòu) 2.3 線性表的鏈式存儲結(jié)構(gòu) 2.4 實例研究 2.5 深入學習導讀 習題2 上機實驗題2第3章 棧和隊列 3.1 棧 3.2 隊列?3.3 優(yōu)先隊列 3.4 實例研究 3.5 深入學習導讀 習題3 上機實驗題3第4章 串 4.1 串類型的定義 4.2 字符串的實現(xiàn) 4.3 字符串模式匹配算法?4.4 實例研究 4.5 深入學習導讀 習題4 上機實驗題4第5章 數(shù)組和廣義表第6章 樹和二叉樹第7章 圖第8章 查找第9章 排序第10章 文件第11章 算法設計與分析附錄A 調(diào)和級數(shù)附錄B 泊松分布附錄C 配套的軟件包附錄D 課程設計項目附錄E 實驗報告格式附錄F 課程設計報告格式參考文獻

章節(jié)摘錄

可能有人認為,隨著計算機的功能越來越強大和運行速度越來越快,程序運行效率已變得越來越不重要了。然而,計算機功能越強大,人們就越要嘗試解決更加復雜的問題,而更復雜的問題需要更大的計算量,這使得對程序的運行效率有更高的要求,工作越復雜越偏離人們的日常經(jīng)驗,使得從事軟件開發(fā)的人必須學習和具備徹底理解隱藏在程序設計后面的一般原理——數(shù)據(jù)結(jié)構(gòu)和算法。從本質(zhì)上講,數(shù)據(jù)結(jié)構(gòu)與算法的原理和方法獨立于具體描述語言,然而只能使用具體的某種計算機語言才能在計算機上實現(xiàn)。本書采用目前普遍使用的C++程序設計語言來描述各種數(shù)據(jù)結(jié)構(gòu)與算法,假設讀者具有程序設計基礎,了解C++的基本結(jié)構(gòu)和語法。為了、使讀者更好理解,本章將對C++的基本結(jié)構(gòu)和語法進行介紹。1.1 數(shù)據(jù)結(jié)構(gòu)的概念和學習數(shù)據(jù)結(jié)構(gòu)的必要性對于數(shù)值計算問題的解決方法,主要是用數(shù)學方程建立數(shù)學模型,例如天氣預報的數(shù)學模型為二階橢圓偏微分方程;預測人口增長的數(shù)學模型為常微分方程。求解這些數(shù)學模型的方法是計算數(shù)學研究的范疇,例如采用差分算法、有限元算法和無限元算法等。對于非數(shù)值計算問題,主要采用數(shù)據(jù)結(jié)構(gòu)的方法建立數(shù)學模型,下面通過實例加以說明。

編輯推薦

通過《數(shù)據(jù)結(jié)構(gòu)與算法(C++版)》的學習,不但能迅速提高數(shù)據(jù)結(jié)構(gòu)與算法的水平,同時還能提高C++程序設計的能力,經(jīng)過適當?shù)倪x擇,《數(shù)據(jù)結(jié)構(gòu)與算法(C++版)》能作為高等院校計算機及相關專業(yè)“數(shù)據(jù)結(jié)構(gòu)”、“數(shù)據(jù)結(jié)構(gòu)與算法”、“數(shù)據(jù)結(jié)構(gòu)與算法分析”和“數(shù)據(jù)結(jié)構(gòu)與算法設計”等課程的教材,也可供其他從事軟件開發(fā)工作的讀者參考。

圖書封面

評論、評分、閱讀與下載


    數(shù)據(jù)結(jié)構(gòu)與算法 PDF格式下載


用戶評論 (總計14條)

 
 

  •   C++版的數(shù)據(jù)結(jié)構(gòu)正合適
  •   是一本很好的數(shù)據(jù)結(jié)構(gòu)圖書
  •   包裝很好,對打算從事軟件游戲開發(fā)的有些基礎的同學我覺得不錯,尤其是那本C++編程思想,就是我想要的
  •   同學推薦的,確實很好,特別喜歡。
  •   C++版本的數(shù)據(jù)結(jié)構(gòu)教材,內(nèi)容很不錯。
  •   配上這本書的原版教材,然后和實驗一起,超棒。
  •   書有點臟,看起來比較舊
  •   講解的東西比我見過的其他任一本國內(nèi)的數(shù)據(jù)結(jié)構(gòu)教材都詳細
  •   買一年了還沒看 哈哈哈
  •   內(nèi)容非常豐富,附帶的代碼非常齊全,在國內(nèi)很少見這么認真的作者,難得啊,極力推薦
  •   我們班就用的這本教材,此書內(nèi)容豐富,算法新穎,在書中不少地方都有作者的獨特見解,所有算法都用5種C++編寫了測試程序進行了測試,在當前社會中作者能沒有浮躁的心態(tài)而安心寫作真的難能可貴。
  •   內(nèi)容錯誤太多,對應的網(wǎng)站上有相應的勘誤表;如果自信C++學得好,值得看一看,對錯誤的認識會提高。
  •   講解的很詳細,內(nèi)容很充實
  •   感覺還可以,但是整體太細了,有些地方和其他書寫的不一樣
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7