“數(shù)據(jù)結(jié)構(gòu)與算法”是一門(mén)重要的基礎(chǔ)理論課程。它不但是計(jì)算機(jī)科學(xué)技術(shù)專業(yè)的核心課,同時(shí)已經(jīng)成為理工類(lèi)學(xué)生的一門(mén)必修課。數(shù)據(jù)結(jié)構(gòu)和算法(C++)運(yùn)用面向?qū)ο蟮姆椒ê虲++語(yǔ)言講述數(shù)據(jù)結(jié)構(gòu)與算法中的基本理論,并從抽象數(shù)據(jù)類(lèi)型ADT的設(shè)計(jì)、表示和實(shí)現(xiàn),C++支持?jǐn)?shù)據(jù)抽象、過(guò)程抽象、支持類(lèi)屬數(shù)據(jù)結(jié)構(gòu)的手段統(tǒng)一描述各種數(shù)據(jù)結(jié)構(gòu)與算法,使得各種常用的數(shù)據(jù)結(jié)構(gòu),如堆棧、隊(duì)列、各種線性表、樹(shù)、圖、排序、查找、隊(duì)列、優(yōu)先隊(duì)列更加條理和系統(tǒng)化。除此之外,數(shù)據(jù)結(jié)構(gòu)和算法(C++)從面向?qū)ο蟮慕嵌扔懻摿怂惴ㄔO(shè)計(jì)的基本方法,做到了從面向?qū)ο蠛兔嫦蜻^(guò)程兩個(gè)方面,在基本理論和基本技能上對(duì)學(xué)生進(jìn)行強(qiáng)化訓(xùn)練。在數(shù)據(jù)結(jié)構(gòu)和算法(C++)最后一章,從應(yīng)用的角度討論了標(biāo)準(zhǔn)模板庫(kù)STL,把最新的支持?jǐn)?shù)據(jù)結(jié)構(gòu)與算法的手段介紹給讀者。
1 緒論
1.1 數(shù)據(jù)類(lèi)型與數(shù)據(jù)結(jié)構(gòu)
1.2 數(shù)據(jù)類(lèi)型(數(shù)據(jù)結(jié)構(gòu))的實(shí)現(xiàn)
1.3 面向?qū)ο蟮脑O(shè)計(jì)和ADT
1.4 算法
1.5 時(shí)間復(fù)雜性的度量
1.6 有效算法的重要性
1.7 漸進(jìn)的空間復(fù)雜性
2 線性表
2.1 線性表的定義及ADT
2.2 線性表的順序存儲(chǔ)結(jié)構(gòu)
2.3 線性表的鏈接存儲(chǔ)結(jié)構(gòu)
2.4 單向循環(huán)鏈表
2.5 雙鏈表、雙向循環(huán)鏈表
2.6 一元多項(xiàng)式的加法
3 棧和隊(duì)列
3.1 棧
3.2 隊(duì)列
3.3 優(yōu)先隊(duì)列
3.4 棧和隊(duì)列的應(yīng)用
4 串
4.1 串、存儲(chǔ)、串的基本運(yùn)算
4.2 字符串類(lèi)
4.3 串的模式匹配
4.3.1 BruteForce算法(BF算法)
4.3.2 KMP算法
5 樹(shù)及二叉樹(shù)
5.1 樹(shù)的定義和術(shù)語(yǔ)
5.2 二叉樹(shù)
5.2.1 二叉樹(shù)的定義
5.2.2 二叉樹(shù)的性質(zhì)
5.2.3 二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)
5.3 二叉樹(shù)的遍歷
5.3.1 前序遍歷
5.3.2 中序遍歷
5.3.3 后序遍歷
5.4 二叉樹(shù)遍歷的迭代器類(lèi)
5.4.1 前序遍歷迭代器類(lèi)
5.4.2 后序遍歷迭代器類(lèi)
5.4.3 中序遍歷迭代器類(lèi)
5.5 中序穿線樹(shù)
5.6 最優(yōu)二叉樹(shù)及其應(yīng)用
5.6.1 基本概念
5.6.2 哈夫曼算法的實(shí)現(xiàn)
5.6.3 哈夫曼編碼
5.7 樹(shù)和森林
5.7.1 樹(shù)的存儲(chǔ)結(jié)構(gòu)
5.7.2 樹(shù)、森林與二叉樹(shù)的轉(zhuǎn)換
5.7.3 樹(shù)和森林的遍歷
……
6 查找
7 圖
8 排序
9 算法設(shè)計(jì)的基本方法
10 標(biāo)準(zhǔn)模板庫(kù)
參考文獻(xiàn)