-
>
全國計算機等級考試最新真考題庫模擬考場及詳解·二級MSOffice高級應用
-
>
決戰行測5000題(言語理解與表達)
-
>
軟件性能測試.分析與調優實踐之路
-
>
第一行代碼Android
-
>
JAVA持續交付
-
>
EXCEL最強教科書(完全版)(全彩印刷)
-
>
深度學習
高等學校數據結構課程系列教材數據結構簡明教程(第2版 微課版)/王芳榮 版權信息
- ISBN:9787302516309
- 條形碼:9787302516309 ; 978-7-302-51630-9
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
高等學校數據結構課程系列教材數據結構簡明教程(第2版 微課版)/王芳榮 本書特色
本書是作者針對數據結構課程的特點,在總結自己長期教學經驗的基礎上編寫的,本書的“簡明”性主要體現在以下兩個方面。 內容上的簡明性。本書的內容基本涵蓋了*新全國計算機專業聯考大綱數據結構部分的知識點,講授上省去了一些難度較大的應用和擴展內容,如表達式求值和迷宮問題、串的KMP 算法和廣義表等。 20小時微課視頻講解,涵蓋了*新全國計算機專業聯考大綱數據結構部分的知識點401道練習題,118道上機實驗題,141個微課視頻教學課件、教學大綱、源碼及試卷 所有算法都用C/C++語言編寫并上機調試
高等學校數據結構課程系列教材數據結構簡明教程(第2版 微課版)/王芳榮 內容簡介
本書內容包括概論、線性表、棧和隊列、串、數組和稀疏矩陣、樹和二叉樹、圖、查找和排序,附錄中給出了書中全部算法代碼清單和2018年全國計算機專業數據結構考研大綱。 本書具有概念清楚、表述明晰、示例豐富、圖示準確和內容完整等特點,尤其注重知識點之間結構關系的展示和通用算法設計方法的提煉。每個知識點都提供了配套的微課視頻。 本書可用作高等院校計算機及相關專業本、專科生數據結構課程的教材,也適合計算機愛好者和參加各類計算機考試的人員研習。
高等學校數據結構課程系列教材數據結構簡明教程(第2版 微課版)/王芳榮 目錄
目錄
第1章概論
1.1數據結構概述
1.1.1什么是數據結構
1.1.2邏輯結構
1.1.3存儲結構
1.1.4數據運算
1.1.5數據結構、數據類型和抽象數據類型
1.2算法和算法分析
1.2.1算法及其描述
1.2.2算法分析
1.3數據結構程序設計
1.3.1數據結構程序設計步驟
1.3.2應用程序的結構
小結
練習題1
上機實驗題1
第2章線性表
2.1線性表的基本概念
2.1.1線性表的定義
2.1.2線性表的基本運算
2.2順序表
2.2.1順序表的定義
2.2.2線性表基本運算在順序表上的實現
2.2.3順序表的算法設計示例
2.3單鏈表和循環單鏈表
2.3.1單鏈表的定義
2.3.2線性表基本運算在單鏈表上的實現
2.3.3單鏈表的算法設計示例
2.3.4循環單鏈表
2.3.5循環單鏈表的算法設計示例
2.4雙鏈表和循環雙鏈表
2.4.1雙鏈表的定義
2.4.2線性表基本運算在雙鏈表上的實現
2.4.3雙鏈表的算法設計示例
2.4.4循環雙鏈表
2.4.5循環雙鏈表的算法設計示例
2.5線性表的應用
2.5.1設計線性表應用程序的一般步驟
2.5.2線性表應用示例
小結
練習題2
上機實驗題2
第3章棧和隊列
3.1棧
3.1.1棧的基本概念
3.1.2棧的順序存儲結構
3.1.3棧的鏈式存儲結構
3.1.4棧的應用示例
3.2隊列
3.2.1隊列的基本概念
3.2.2隊列的順序存儲結構
3.2.3隊列的鏈式存儲結構
3.2.4隊列的應用示例
小結
練習題3
上機實驗題3
第4章串
4.1串的基本概念
4.1.1串的定義
4.1.2串的基本運算
4.2串的順序存儲結構
4.2.1順序串的定義
4.2.2串基本運算在順序串上的實現
4.2.3順序串的算法設計示例
4.3串的鏈式存儲結構
4.3.1鏈串的定義
4.3.2串基本運算在鏈串上的實現
4.3.3鏈串的算法設計示例
4.4串的應用
小結
練習題4
上機實驗題4
第5章數組和稀疏矩陣
5.1數組
5.1.1數組的定義
5.1.2數組的存儲結構
5.1.3數組的算法設計示例
5.2特殊矩陣的壓縮存儲
5.3稀疏矩陣
5.3.1稀疏矩陣的三元組表示
5.3.2稀疏矩陣的十字鏈表表示
小結
練習題5
上機實驗題5
第6章樹和二叉樹
6.1樹
6.1.1樹的定義
6.1.2樹的邏輯結構表示
6.1.3樹的基本術語
6.1.4樹的性質
6.1.5樹的基本運算
6.1.6樹的存儲結構
6.2二叉樹
6.2.1二叉樹的定義
6.2.2二叉樹的性質
6.2.3二叉樹的存儲結構
6.3遞歸算法設計方法
6.3.1什么是遞歸
6.3.2遞歸算法設計一般方法
6.3.3二叉樹的遞歸算法設計
6.4二叉樹的基本運算算法
6.4.1二叉樹的基本運算
6.4.2二叉樹基本運算實現算法
6.5二叉樹的遍歷
6.5.1常用的二叉樹遍歷算法
6.5.2遍歷算法的應用
6.6二叉樹的構造
6.6.1什么是二叉樹的構造
6.6.2二叉樹的構造方法
6.7二叉樹與樹之間的轉換
6.7.1森林/樹轉換成二叉樹
6.7.2二叉樹還原為樹/森林
6.8線索二叉樹
6.8.1什么是線索
6.8.2線索二叉樹的存儲結構
6.8.3建立線索二叉樹及其銷毀
6.8.4線索二叉樹的基本運算算法
6.9哈夫曼樹
6.9.1哈夫曼樹的定義
6.9.2構造哈夫曼樹
6.9.3哈夫曼編碼
小結
練習題6
上機實驗題6
第7章圖
7.1圖的基本概念
7.1.1圖的定義
7.1.2圖的基本術語
7.1.3圖的基本操作
7.2圖的存儲結構
7.2.1鄰接矩陣
7.2.2鄰接表
7.3圖的遍歷
7.3.1深度優先遍歷算法
7.3.2廣度優先遍歷算法
7.3.3圖遍歷算法的應用
7.4生成樹和*小生成樹
7.4.1什么是圖的生成樹和*小生成樹
7.4.2普里姆算法
7.4.3克魯斯卡爾算法
7.5*短路徑
7.5.1單源*短路徑算法
7.5.2多源*短路徑算法
7.6拓撲排序
7.7AOE網與關鍵路徑
小結
練習題7
上機實驗題7
第8章查找
8.1查找的概念
8.2靜態查找表
8.2.1順序查找
8.2.2折半查找
8.2.3索引查找
8.3動態查找表
8.3.1二叉排序樹
8.3.2二叉平衡樹
8.3.3B樹
8.3.4B+樹
8.4哈希表
8.4.1哈希表的基本概念
8.4.2哈希函數構造方法
8.4.3哈希沖突解決方法
8.4.4哈希表查找及性能分析
小結
練習題8
上機實驗題8
第9章排序
9.1排序的基本概念
9.2插入排序
9.2.1直接插入排序
9.2.2折半插入排序
9.2.3希爾排序
9.3交換排序
9.3.1冒泡排序
9.3.2快速排序
9.4選擇排序
9.4.1簡單選擇排序
9.4.2堆排序
9.5歸并排序
9.6基數排序
9.7外排序
9.7.1磁盤排序過程
9.7.2生成初始歸并段
9.7.3多路平衡歸并
9.7.4*佳歸并樹
小結
練習題9
上機實驗題9
附錄
附錄A書中部分算法清單
附錄B全國計算機專業數據結構2018年聯考大綱
參考文獻
高等學校數據結構課程系列教材數據結構簡明教程(第2版 微課版)/王芳榮 節選
第3章棧和隊列 棧和隊列是兩種特殊的線性表。從數據邏輯結構角度看,棧和隊列的元素均呈現一種線性關系; 從運算的角度看,棧和隊列是操作受限的線性表。本章介紹棧和隊列的概念、存儲結構和基本運算的實現算法。 3.1棧 3.1.1棧的基本概念 棧是一種特殊的線性表,其特殊性體現在元素插入和刪除運算上,它的插入和刪除運算僅限定在表的某一端進行,不能在表中間和另一端進行。允許進行插入和刪除的一端稱為棧頂,另一端稱為棧底。棧的插入操作稱為進棧(或入棧),刪除操作稱為出棧(或退棧)。處于棧頂位置的數據元素稱為棧頂元素。不含任何數據元素的棧稱為空棧。 正是這種受限的元素插入和刪除運算,使得棧表現出先進后出或者后進先出的特點。舉一個例子進行說明,假設有一個很窄的死胡同,胡同里能容納若干人,但每次只能容許一個人進出。現有5個人,分別編號為①~⑤,按編號的順序依次進入此死胡同,如圖3.1(a)所示。此時若編號為④的人要退出死胡同,必須等⑤退出后才可以。若①要退出,則必須等到⑤、④、③、②依次都退出后才行,如圖3.1(b)所示。這里人進出死胡同的原則是先進去的后出來。 圖3.1死胡同示意圖 在該例中,死胡同就看作是一個棧,棧頂相當于死胡同口,棧底相當于死胡同的另一端,進、出死胡同可看作進棧、出棧操作。插入棧的示意圖如圖3.2所示。 棧的基本運算主要包括以下6種。 (1) 初始化棧InitStack(st): 建立一個空棧st。 (2) 銷毀棧DestroyStack(st): 釋放棧st占用的內存空間。 (3) 進棧Push(st,x): 將元素x插入棧st中,使x成為棧st的棧頂元素。 (4) 出棧Pop(st,x): 當棧st不空時,將棧頂元素賦給x,并從棧中刪除當前棧頂元素。 (5) 取棧頂元素GetTop(st,x): 若棧st不空,取棧頂元素x并返回1; 否則返回0。 (6) 判斷棧空StackEmpty(st): 判斷棧st是否為空棧。 包含基本運算的棧如圖3.3所示,其中,op1~op6表示上述6個基本運算。 圖3.2棧的示意圖 圖3.3包含基本運算的棧 【例3.1】設一個棧的輸入序列為a、b、c、d,借助一個棧(假設棧大小足夠大)所得到的出棧序列不可能是。 A. a、b、c、dB. b、d、c、aC. a、c、d、bD. d、a、b、c 解: a、b、c、d序列經過棧的情況如圖3.4所示,根據棧的特點,很容易得出d、a、b、c是不可能的,因為d先出棧,說明a、b、c均已在棧中,按照進棧順序,從棧頂到棧底的順序應為c、b、a,出棧的順序只能是d、c、b、a。所以不可能的出棧序列是D。 【例3.2】已知一個棧的進棧序列是1,2,3,…,n,其出棧序列是p1,p2,…,pn,若p1=n,則pi的值為。 A. iB. n-iC. n-i+1D. 不確定 解: p1=n,則出棧序列是唯一的,即為n,n-1,…,2,1,由此推出pi=n-i+1。本題答案為C。 【例3.3】元素a、b、c、d、e依次進入初始為空的棧中,假設棧大小足夠大。若元素進棧后可停留、可立即出棧,直到所有的元素都出棧,則所有可能的出棧序列中,以元素d開頭的出棧序列個數是。 A. 3B. 4C. 5D. 6 解: 若元素d**個出棧,a、b、c均在棧中,從棧頂到棧底的順序應為c、b、a,如圖3.5所示,此后合法的棧操作如下。 (1) e進棧,e出棧,c出棧,b出棧,a出棧,得到的出棧序列decba。 (2) c出棧,e進棧,e出棧,b出棧,a出棧,得到的出棧序列dceba。 (3) c出棧,b出棧,e進棧,e出棧,a出棧,得到的出棧序列dcbea。 (4) c出棧,b出棧,a出棧,e進棧,e出棧,得到的出棧序列dcbae。 以元素d開頭的出棧序列個數為4,本題答案為B。 圖3.4序列經過一個棧的情況 圖3.5元素出棧的情況 3.1.2棧的順序存儲結構 棧是一種特殊的線性表,和線性表存儲結構類似,棧也有兩種存儲結構: 順序存儲結構和鏈式存儲結構。 棧的順序存儲結構稱為順序棧。順序棧通常由一個一維數組data和一個記錄棧頂元素位置的變量top組成。習慣上將棧底放在數組下標小的那端,棧頂元素由棧頂指針top所指向。順序棧類型聲明如下。 #define MaxSize 100//順序棧的初始分配空間大小 typedef struct {ElemType data[MaxSize];//保存棧中元素,這里假設ElemType為char類型 int top;//棧頂指針 } SqStack; 在上述順序棧定義中,ElemType為棧元素的數據類型,MaxSize為一個常量,表示data數組中*多可放的元素個數,data元素的下標范圍為0~MaxSize-1。當top=-1時表示棧空; 當top=MaxSize-1時表示棧滿。 圖3.6說明了順序棧st的幾種狀態(假設MaxSize=5)。圖3.6(a)表示順序棧為棧空,這也是初始化運算得到的結果。此時棧頂指針top=-1。如果做出棧運算,則會“下溢出”。 ……
高等學校數據結構課程系列教材數據結構簡明教程(第2版 微課版)/王芳榮 作者簡介
本書是作者針對數據結構課程的特點,在總結自己長期教學經驗的基礎上編寫的,本書的“簡明”性主要體現在以下兩個方面。 內容上的簡明性。本書的內容基本涵蓋了1新全國計算機專業聯考大綱數據結構部分的知識點,講授上省去了一些難度較大的應用和擴展內容,如表達式求值和迷宮問題、串的KMP 算法和廣義表等。
- >
史學評論
- >
苦雨齋序跋文-周作人自編集
- >
我從未如此眷戀人間
- >
山海經
- >
月亮與六便士
- >
大紅狗在馬戲團-大紅狗克里弗-助人
- >
回憶愛瑪儂
- >
小考拉的故事-套裝共3冊