出版時(shí)間:2012-2 出版社:西安電子科技大學(xué)出版社 作者:榮政 編 頁數(shù):296
內(nèi)容概要
本書以程序設(shè)計(jì)能力的培養(yǎng)為目標(biāo),系統(tǒng)地介紹了數(shù)據(jù)結(jié)構(gòu)和算法設(shè)計(jì)的相關(guān)知識(shí),其主要內(nèi)容包括:線性表、棧、隊(duì)列、串、數(shù)組、樹、圖、索引和散列等基本數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用;分治法、動(dòng)態(tài)規(guī)劃、貪心算法、回溯法、分支界限法等常用的算法設(shè)計(jì)方法。書中還通過具體實(shí)例的分析和設(shè)計(jì),介紹了軟件設(shè)計(jì)規(guī)范及程序設(shè)計(jì)的關(guān)鍵技術(shù),具有較高的使用價(jià)值。
本書可作為高等學(xué)校電子信息類非計(jì)算機(jī)專業(yè)“數(shù)據(jù)結(jié)構(gòu)”課程的本科(或大專)教材,也可供自學(xué)計(jì)算機(jī)軟件基礎(chǔ)知識(shí)的讀者參考。
書籍目錄
第1章 緒論
1.1軟件的基本概念
1.1.1軟件應(yīng)用
1.1.2軟件生存期
1.1.3軟件技術(shù)
1.1.4程序設(shè)計(jì)技術(shù)
1.2數(shù)據(jù)結(jié)構(gòu)概述
1.2.1數(shù)據(jù)結(jié)構(gòu)的引入
1.2.2數(shù)據(jù)結(jié)構(gòu)的基本概念
1.2.3數(shù)據(jù)結(jié)構(gòu)與程序設(shè)計(jì)
1.3算法與算法分析
1.3.1算法的概念
1.3.2算法分析
1.4程序設(shè)計(jì)的關(guān)鍵技術(shù)
1.4.1程序結(jié)構(gòu)設(shè)計(jì)
1.4.2模塊設(shè)計(jì)
1.4.3 良好的編程風(fēng)格
1.4.4排錯(cuò)與測試
1.4.5程序性能
1.5程序設(shè)計(jì)的步驟及實(shí)例
1.5.1程序設(shè)計(jì)的步驟
1.5.2程序設(shè)計(jì)實(shí)例
習(xí)題
第2章 線性表
2.1線性表的基本概念及運(yùn)算
2.2順序表
2.2.1順序表的基本運(yùn)算
2.2.2順序表的應(yīng)用實(shí)例——學(xué)生學(xué)籍檔案管理.
2.3鏈表
2.3.1 單鏈表
2.3.2單鏈表的基本運(yùn)算
2.3.3循環(huán)鏈表
2.3.4雙向鏈表
2.3.5鏈表應(yīng)用實(shí)例——多項(xiàng)式的表示及運(yùn)算
習(xí)題
第3章 棧和隊(duì)列
3.1 棧
3.1.1棧的順序存儲(chǔ)表示——順序棧
3.1.2棧的鏈?zhǔn)酱鎯?chǔ)表示——鏈棧
3.1.3棧的應(yīng)用
3.2 隊(duì)列
3.2.1隊(duì)列的存儲(chǔ)結(jié)構(gòu)
3.2.2隊(duì)列的應(yīng)用
習(xí)題
第4章 串和數(shù)組
4.1串及其運(yùn)算
4.2串的存儲(chǔ)結(jié)構(gòu)
4.3 串運(yùn)算的實(shí)現(xiàn)
4.3.1基本運(yùn)算的實(shí)現(xiàn)
4.3.2改進(jìn)的模式匹配算法
4.4數(shù)組的定義和運(yùn)算
4.5數(shù)組的順序存儲(chǔ)結(jié)構(gòu)
4.6矩陣的壓縮存儲(chǔ)
4.6.1特殊矩陣
4.6.2稀疏矩陣
習(xí)題
第5章 樹
5.1樹的基本概念
5.2二叉樹
5.3二叉樹的存儲(chǔ)結(jié)構(gòu)
5.3.1順序存儲(chǔ)結(jié)構(gòu)
5.3.2鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
5.3_3二叉樹的建立
5.4二叉樹的遍歷
5.4.1二叉樹的深度優(yōu)先遍歷
5.4.2二叉樹的廣度優(yōu)先遍歷
5.4.3深度優(yōu)先遍歷的非遞歸算法
5.4.4從遍歷序列恢復(fù)二叉樹
5.4.5遍歷算法的應(yīng)用
5.5樹和森林
5.5.1樹的存儲(chǔ)結(jié)構(gòu)
5.5.2樹、森林和二叉樹之間的轉(zhuǎn)換
5.6線索二叉樹
5.6.1線索二叉樹的建立
……
第6章 圖
第7章 索引結(jié)構(gòu)與散列技術(shù)
第8章 縮小規(guī)模算法
第9章 搜索算法
第10章 “難”問題求解算法
參考文獻(xiàn)
章節(jié)摘錄
第1章 緒 論 隨著計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展和日趨成熟,軟件已經(jīng)成為社會(huì)發(fā)展的重要驅(qū)動(dòng)力之一:軟件是商業(yè)決策的基本引擎,是解決現(xiàn)代科學(xué)研究和工程問題的基礎(chǔ),也是提升現(xiàn)代產(chǎn)品和服務(wù)品質(zhì)的關(guān)鍵因素。軟件在現(xiàn)代社會(huì)中是不可缺少的,它可以應(yīng)用于各種類型的應(yīng)用系統(tǒng)中,如辦公、娛樂、交通、教育、醫(yī)藥、通信……數(shù)不勝數(shù),并成為從基礎(chǔ)教育到基因工程的所有領(lǐng)域的推進(jìn)器?! ∷羞@一切改變了軟件原有的概念,軟件無所不在,已經(jīng)成為人們現(xiàn)實(shí)生活中必不可少的實(shí)用技術(shù)?! ?.1 軟件的基本概念 從一般意義上講,能夠在計(jì)算機(jī)上運(yùn)行的程序都可以稱為軟件。軟件更準(zhǔn)確的定義是利用計(jì)算機(jī)本身提供的邏輯功能,合理地組織計(jì)算機(jī)的工作流程,簡化或替代人們使用計(jì)算機(jī)過程中的各個(gè)環(huán)節(jié),提供給使用者一個(gè)便于操作的工作環(huán)境的“程序集”。它包括計(jì)算機(jī)程序和與之相關(guān)的文檔資料的總和(文檔是指編制程序所使用的技術(shù)資料和使用該程序的說明性資料,如使用說明書等,即開發(fā)、使用和維護(hù)程序所需的一切資料)。 軟件是邏輯的而不是物理的產(chǎn)品,與硬件相比具有以下完全不同的特征: ?。?)軟件是由開發(fā)或工程化而形成的,而不是由傳統(tǒng)意義上的制造產(chǎn)生的。硬件的再制造過程中可能引入質(zhì)量問題,軟件則幾乎不可能發(fā)生類似問題。軟件的成本集中于開發(fā),而硬件的成本除了開發(fā)成本外還有生產(chǎn)成本?! 。?)軟件不會(huì)磨損。軟件的故障率隨時(shí)間的推移而降低,而硬件的故障率隨時(shí)間的推移而增加。硬件模塊磨損后可以用新的備用模塊替換,而軟件故障則是其中的錯(cuò)誤,沒有可替換的備件?! 。?)大多數(shù)軟件是自定義的,而不是通過已有的組件組裝而來的。當(dāng)然,目前基于組件的軟件開發(fā)已經(jīng)成為軟件未來的主要發(fā)展趨勢?! ?.1.1 軟件應(yīng)用 從某種程度上講,對(duì)軟件應(yīng)用給出一個(gè)確切的分類是比較困難的。下面給出的一些軟件的應(yīng)用領(lǐng)域,可以看做是一種潛在的應(yīng)用分類: ?。?)系統(tǒng)軟件。系統(tǒng)軟件是指一組為其他程序服務(wù)的程序,如操作系統(tǒng)、編譯器等?! 。?)實(shí)時(shí)軟件。管理、分析和控制現(xiàn)實(shí)世界中發(fā)生的事件的程序稱為實(shí)時(shí)軟件。實(shí)時(shí)軟件包括:①數(shù)據(jù)接收部件:負(fù)責(zé)從外部環(huán)境獲取和格式化信息;②分析部件:負(fù)責(zé)將信息轉(zhuǎn)換為具體應(yīng)用所需要的形式;③控制/輸出部件:負(fù)責(zé)對(duì)外部事件做出響應(yīng);④管理部件:負(fù)責(zé)協(xié)調(diào)其他各部件,使得系統(tǒng)能夠保持一個(gè)可接受的實(shí)時(shí)響應(yīng)時(shí)間?! 。?)商業(yè)軟件。商業(yè)信息處理是目前最大的軟件應(yīng)用領(lǐng)域。具體的“信息系統(tǒng)”均可歸入管理信息系統(tǒng)(MIS)軟件。使用這類軟件可以訪問一個(gè)或多個(gè)包含商業(yè)信息的大型數(shù)據(jù)庫。該領(lǐng)域的應(yīng)用使已有的數(shù)據(jù)重新構(gòu)造,變換成一種能夠輔助商業(yè)操作或管理決策的形式。除了傳統(tǒng)的數(shù)據(jù)處理應(yīng)用外,商業(yè)軟件還包括交互式計(jì)算和客戶/服務(wù)器模式計(jì)算(如POS事務(wù)處理)。 ?。?)工程和科學(xué)計(jì)算軟件。工程和科學(xué)計(jì)算軟件的特征是“數(shù)值分析”算法。此類軟件應(yīng)用的涵蓋面很廣,從天文學(xué)到火山學(xué),從汽車壓力分析到航天飛機(jī)的軌道動(dòng)力學(xué),從分子生物學(xué)到自動(dòng)化制造等?! 。?)嵌入式軟件。智能產(chǎn)品在工業(yè)和消費(fèi)電子市場上都是必不可少的,而嵌入式軟件正是駐留在這些智能產(chǎn)品的只讀內(nèi)存中,實(shí)現(xiàn)產(chǎn)品的智能應(yīng)用。嵌入式軟件能夠執(zhí)行有限但專職的功能?! 。?)個(gè)人軟件。僅供個(gè)人使用的程序稱為個(gè)人軟件,如文字處理、電子表格、多媒體娛樂、數(shù)據(jù)庫管理、個(gè)人金融應(yīng)用、訪問外部網(wǎng)絡(luò)應(yīng)用等?! 。?)人工智能軟件。利用非數(shù)值算法解決復(fù)雜的問題,這些問題不能通過計(jì)算或直接分析得到答案,這就要使用人工智能軟件,如專家系統(tǒng)(基于知識(shí)的軟件)、模式識(shí)別、定理證明、游戲等?! ?.1.2 軟件生存期 軟件生存期是指從軟件項(xiàng)目的需求定義到完成使命后而廢棄的全過程。把整個(gè)過程中的活動(dòng)進(jìn)一步展開,可以得到軟件生存期的六個(gè)工作階段,即制定計(jì)劃、需求分析和定義、軟件設(shè)計(jì)、程序編制、軟件測試及運(yùn)行/維護(hù)?! ?.制定計(jì)劃 首先要確定開發(fā)軟件系統(tǒng)的總目標(biāo),給出對(duì)其在功能、性能、可靠性以及接口等方面的要求;然后由系統(tǒng)分析員和用戶合作,論證該項(xiàng)軟件任務(wù)的可行性,探討解決問題的方案,并對(duì)可利用的資源(計(jì)算機(jī)硬件、軟件、人力等)、研發(fā)的成本、可取得的效益、開發(fā)的進(jìn)度做出評(píng)估,制定出完成開發(fā)任務(wù)的實(shí)施計(jì)劃,連同可行性研究報(bào)告,提交管理部門審查?! ?.需求分析和定義 對(duì)開發(fā)軟件提出的需求進(jìn)行分析并給出詳細(xì)的定義。首先由軟件人員和用戶共同討論決定哪些需求是可以滿足的,并對(duì)其加以確切的描述;然后編寫出軟件需求說明書或系統(tǒng)功能說明書,以及初步的系統(tǒng)用戶手冊(cè),提交管理機(jī)構(gòu)評(píng)審?! ?.軟件設(shè)計(jì) 在軟件設(shè)計(jì)階段中,設(shè)計(jì)人員把已確定的各項(xiàng)需求轉(zhuǎn)換成一個(gè)相應(yīng)的體系結(jié)構(gòu)。結(jié)構(gòu)中的每一個(gè)組成部分都是意義明確的模塊,每個(gè)模塊都和某些需求相對(duì)應(yīng),即概要設(shè)計(jì)。然后對(duì)每個(gè)模塊要完成的工作進(jìn)行具體的描述,為源程序的編寫打下基礎(chǔ),即詳細(xì)設(shè)計(jì)?! ?/pre>圖書封面
評(píng)論、評(píng)分、閱讀與下載
- 還沒讀過(91)
- 勉強(qiáng)可看(665)
- 一般般(113)
- 內(nèi)容豐富(4705)
- 強(qiáng)力推薦(385)
數(shù)據(jù)結(jié)構(gòu)與算法分析 PDF格式下載