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