Ⅰ 數據結構(c語言版)的中國鐵道出版社出版圖書
書名:數據結構(C語言版)
套系名稱:高職高專計算機實用教程系列規劃教材
書號:978-7-113-12943-9版次:1-1開本:16開頁碼:236頁
作者:王桂芝
出版時間:2011-08-01
定價:24 元
出版社:中國鐵道出版社
適用專業:計算機專業 本書重點討論了各種基本數據結構的類型描述、常用演算法實現及其應用。全書共分9章:第1章主要介紹了有關數據結構的基本概念和術語;第2章~第7章分別討論了線性表、棧和隊列、串、數組和廣義表、樹及圖等基本類型的數據結構;第8章和第9章主要討論了查找和排序的各種實現方法及其綜合分析比較。除第1章外,其餘每章最後一節以實訓的形式給出了本章重點演算法的應用實例,以便於上機驗證。
本書基本理論的闡述由淺入深、演算法描述清晰、內容安排合理、語言精練、邏輯推理嚴密,適合作為高職高專院校計算機類或信息類相關專業的教材,也可為計算機專業人員自學或參加計算機類考試提供參考。 第1章 數據結構概述 1
1.1 數據結構課程的性質和地位 1
1.1.1 數據結構課程所討論的內容 1
1.1.2 數據結構在計算機學科中的地位 4
1.1 數據結構課程的性質和地位 1
1.1.1 數據結構課程所討論的內容 1
1.1.2 數據結構在計算機學科中的地位 4
1.2 基本概念和術語 5
1.2.1 數據結構的相關術語 5
1.2.2 數據的邏輯結構 5
1.2.3 數據的存儲結構 6
1.2.4 數據類型和抽象數據類型 7
1.3 演算法及演算法分析 8
1.3.1 演算法的概念 8
1.3.2 演算法的設計要求 8
1.3.3 演算法的時間復雜度 9
1.3.4 演算法的空間復雜度 11
本章小結 11
習題 12
第2章 線性表 15
2.1 線性表的邏輯結構 15
2.1.1 線性表的定義 15
2.1.2 線性表的常用操作 16
2.2 線性表的順序存儲結構 16
2.2.1 順序表的類型定義 17
2.2.2 順序表的基本運算 18
2.3 線性表的鏈式存儲結構 21
2.3.1 單鏈表 21
2.3.2 循環鏈表 25
2.3.3 雙向鏈表 26
2.3.4 靜態鏈表 28
2.4 兩種存儲結構的比較 28
2.5 實訓 29
本章小結 31
習題 32
第3章 棧和隊列 35
3.1 棧 35
3.1.1 棧的定義及常用操作 35
3.1.2 棧的順序存儲結構 36
3.1.3 棧的鏈式存儲結構 40
3.1.4 棧的應用 41
3.2 隊列 47
3.2.1 隊列的定義及常用操作 47
3.2.2 隊列的順序存儲結構 47
3.2.3 隊列的鏈式存儲結構 49
3.2.4 隊列的應用 51
3.3 實訓 52
本章小結 55
習題 56
第4章 串 58
4.1 串的定義及常用操作 58
4.1.1 串的定義及相關術語 58
4.1.2 串的常用操作 59
4.2 串的存儲結構 59
4.2.1 串的定長順序存儲結構 60
4.2.2 串的動態順序存儲結構 62
4.2.3 串的鏈式存儲結構 63
4.3 串的模式匹配 63
4.4 串的應用 65
4.5 實訓 66
本章小結 68
習題 68
第5章 數組和廣義表 71
5.1 數組 71
5.1.1 數組的定義及常用操作 71
5.1.2 數組的順序存儲結構及基本運算 72
5.2 矩陣的壓縮存儲 73
5.2.1 特殊矩陣 73
5.2.2 稀疏矩陣 76
5.3 廣義表 77
5.3.1 廣義表的定義及常用操作 78
5.3.2 廣義表的存儲結構 79
* 5.3.3 廣義表基本操作的實現 82
5.4 實訓 83
本章小結 86
習題 87
第6章 樹 89
6.1 樹的邏輯結構 89
6.1.1 樹的定義及邏輯特徵 89
6.1.2 樹的表示形式 90
6.1.3 樹的基本術語 91
6.1.4 樹的常用操作 92
6.2 二叉樹 92
6.2.1 二叉樹的定義及常用操作 92
6.2.2 二叉樹的性質 93
6.2.3 二叉樹的存儲結構 96
6.3 二叉樹的遍歷 97
6.3.1 二叉樹遍歷的概念 97
6.3.2 二叉樹遍歷的演算法 98
6.4 構造二叉樹 101
6.4.1 由遍歷序列構造二叉樹 101
6.4.2 構造二叉樹的演算法 103
6.4.3 二叉樹的其他遞歸演算法 104
6.5 線索二叉樹 105
6.5.1 線索二叉樹的概念 105
6.5.2 二叉樹的線索化 106
6.5.3 線索二叉樹的主要演算法 107
6.6 樹和森林 109
6.6.1 樹的存儲結構 109
6.6.2 樹、森林和二叉樹的轉換 112
6.6.3 樹和森林的遍歷 115
6.7 哈夫曼樹 116
6.7.1 哈夫曼樹的定義 116
6.7.2 哈夫曼樹的構造演算法 118
6.7.3 哈夫曼編碼 119
6.8 實訓 120
本章小結 123
習題 123
第7章 圖 127
7.1 圖的定義和術語 127
7.1.1 圖的基本概念 128
7.1.2 圖的基本操作 130
7.2 圖的存儲結構 130
7.2.1 鄰接矩陣表示法 130
7.2.2 鄰接表表示法 131
7.3 圖的遍歷 132
7.3.1 深度優先搜索 133
7.3.2 廣度優先搜索 134
7.4 生成樹和最小生成樹 136
7.4.1 基本概念 136
7.4.2 普里姆(Prim)演算法 137
7.4.3 克魯斯卡爾(Kruskal)演算法 138
7.5 有向無環圖及其應用 139
7.5.1 拓撲排序 139
7.5.2 關鍵路徑 142
7.6 最 短 路 徑 145
7.6.1 最短路徑的概念 145
7.6.2 單源最短路徑 145
7.6.3 所有頂點之間的最短路徑 148
7.7 實訓 151
本章小結 153
習題 154
第8章 查找 158
8.1 查找的基本概念 158
8.2 線性表查找 160
8.2.1 順序查找 160
8.2.2 折半查找 161
8.2.3 索引查找 164
8.3 樹 表 查 找 165
8.3.1 二叉排序樹 165
* 8.3.2 平衡二叉樹 170
8.4 哈希表查找 176
8.4.1 哈希表的定義 176
8.4.2 哈希函數的構造 176
8.4.3 沖突處理方法 178
8.4.4 哈希表的查找及其分析 180
8.5 實訓 182
本章小結 184
習題 185
第9章 內部排序 189
9.1 排序概述 189
9.1.1 排序的基本概念 190
9.1.2 排序的分類 190
9.1.3 排序演算法性能評價 190
9.1.4 排序數據的類型說明 191
9.2 插入排序 191
9.2.1 直接插入排序 191
9.2.2 折半插入排序 193
9.2.3 希爾排序 194
9.3 交換排序 196
9.3.1 冒泡排序 196
9.3.2 快速排序 198
9.4 選擇排序 202
9.4.1 簡單選擇排序 202
9.4.2 樹形選擇排序 203
9.4.3 堆排序 204
9.5 歸並排序 209
9.6 基數排序 211
9.6.1 多關鍵字排序 211
9.6.2 基數排序 212
9.7 各種內部排序方法的比較 216
9.8 實訓 217
本章小結 220
習題 221
參考文獻 224
實訓項目8 Word 2003表格操作 270
實訓項目9 Word 2003的圖文混排 275
第4章 Excel 2003實訓 280
實訓項目10 Excel 2003基本操作 280
實訓項目11 工作表的編輯與格式化 284
實訓項目12 排序和篩選 288
實訓項目13 分類匯總和數據透視表 291
實訓項目14 圖表的製作 293
第5章 PowerPoint 2003實訓 298
實訓項目15 PowerPoint 2003基本操作 298
實訓項目16 幻燈片的編輯 301
實訓項目17 演示文稿的放映 304
實訓項目18 幻燈片動態效果的設置 308
第6章 網路操作實訓 311
實訓項目19 IE瀏覽器的使用 311
實訓項目20 E-mail的使用 315
實訓項目21 Outlook Express的使用 318
實訓項目22 信息搜索和下載 324
附錄A Windows XP的安裝 330
Ⅱ 數據結構如何通過C語言來實現,請舉例說明,盡可能詳細
數據的結構無非就是表:線性表、鏈表,棧,隊列,串,數組,樹、二叉樹,圖,這幾種。
常用的使用指針,或數組建立數據結構,然後對其進行插入、刪除、查找、排序等操作。
以下是C語言實現的循環隊列:
#include<stdio.h>
#include<stdlib.h>
#define MAX_QSIZE 5
struct SqQueue
{ QElemType *base; // 初始化的動態分配存儲空間
int front; // 頭指針,若隊列不空,指向隊列頭元素
int rear; // 尾指針,若隊列不空,指向隊列尾元素的下一個位置
};
// bo3-4.cpp 循環隊列(存儲結構由c3-3.h定義)的基本操作(9個)
void InitQueue(SqQueue &Q)
{ // 構造一個空隊列Q。在教科書第64頁
Q.base=(QElemType*)malloc(MAX_QSIZE*sizeof(QElemType));
if(!Q.base) // 存儲分配失敗
exit(OVERFLOW);
Q.front=Q.rear=0;
}
void DestroyQueue(SqQueue &Q)
{ // 銷毀隊列Q,Q不再存在
if(Q.base) // 隊列Q存在
free(Q.base); // 釋放Q.base所指的存儲空間
Q.base=NULL; // Q.base不指向任何存儲單元
Q.front=Q.rear=0;
}
void ClearQueue(SqQueue &Q)
{ // 將隊列Q清為空隊列
Q.front=Q.rear=0;
}
int QueueEmpty(SqQueue Q)
{ // 若隊列Q為空隊列,則返回TRUE;否則返回FALSE
if(Q.front==Q.rear) // 隊列空的標志
return TRUE;
else
return FALSE;
}
int GetHead(SqQueue Q,QElemType &e)
{ // 若隊列Q不空,則用e返回Q的隊頭元素,並返回OK;否則返回ERROR
if(Q.front==Q.rear) // 隊列空
return ERROR;
e=Q.base[Q.front]; // 將隊頭元素的值賦給e
return OK;
}
int EnQueue(SqQueue &Q,QElemType e)
{ // 插入元素e為隊列Q的新的隊尾元素。在教科書第65頁
if((Q.rear+1)%MAX_QSIZE==Q.front) // 隊列滿
return ERROR;
Q.base[Q.rear]=e; // 將e插在隊尾
Q.rear=(Q.rear+1)%MAX_QSIZE; // 隊尾指針+1後對MAX_QSIZE取余
return OK;
}
int QueueLength(SqQueue Q)
{ // 返回隊列Q的元素個數,即隊列的長度。在教科書第64頁
return(Q.rear-Q.front+MAX_QSIZE)%MAX_QSIZE;
}
int DeQueue(SqQueue &Q,QElemType &e) // 在教科書第65頁
{ // 若隊列Q不空,則刪除Q的隊頭元素,用e返回其值,並返回OK;否則返回ERROR
if(Q.front==Q.rear) // 隊列空
return ERROR;
e=Q.base[Q.front]; // 將隊頭元素的值賦給e
Q.front=(Q.front+1)%MAX_QSIZE; // 移動隊頭指針
return OK;
}
void QueueTraverse(SqQueue Q,void(*visit)(QElemType))
{ // 從隊頭到隊尾依次對隊列Q中每個元素調用函數visit()
int i=Q.front; // i最初指向隊頭元素
while(i!=Q.rear) // i指向隊列Q中的元素
{ visit(Q.base[i]); // 對i所指元素調用函數visit()
i=(i+1)%MAX_QSIZE; // i指向下一個元素
}
printf("\n");
}
void main()
{
int j;
int i=0,m;
int d;
SqQueue Q;
InitQueue(Q); // 初始化隊列Q,失敗則退出
printf("初始化隊列後,隊列空否?%u(1:空 0:否)\n",QueueEmpty(Q));
printf("請輸入整型隊列元素(不超過%d個),-1為提前結束符:",MAX_QSIZE-1);
do
{ scanf("%d",&d); // 由鍵盤輸入整型隊列元素
if(d==-1) // 輸入的是提前結束符
break; // 退出輸入數據循環
i++; // 計數器+1
EnQueue(Q,d); // 入隊輸入的元素
}while(i<MAX_QSIZE-1); // 隊列元素的個數不超過允許的范圍
printf("隊列長度為%d,",QueueLength(Q));
printf("現在隊列空否?%u(1:空 0:否)\n",QueueEmpty(Q));
printf("連續%d次由隊頭刪除元素,隊尾插入元素:\n",MAX_QSIZE);
for(m=1;m<=MAX_QSIZE;m++)
{ DeQueue(Q,d); // 刪除隊頭元素,其值賦給d
printf("刪除的元素是%d,請輸入待插入的元素:",d);
scanf("%d",&d); // 輸入要入隊的元素給d
EnQueue(Q,d); // 將d入隊
}
m=QueueLength(Q); // m為隊列Q的長度
printf("現在隊列中的元素為");
QueueTraverse(Q,print); // 從隊頭到隊尾依次對隊列Q的每個元素調用函數print()
printf("共向隊尾插入了%d個元素。",i+MAX_QSIZE);
if(m-2>0)
printf("現在由隊頭刪除%d個元素,",m-2);
while(QueueLength(Q)>2)
{ DeQueue(Q,d); // 刪除隊頭元素,其值賦給d
printf("刪除的元素值為%d,",d);
}
j=GetHead(Q,d); // 將隊頭元素賦給d
if(j) // 隊列Q不空
printf("現在隊頭元素為%d\n",d);
ClearQueue(Q); // 清空隊列Q
printf("清空隊列後,隊列空否?%u(1:空 0:否)\n",QueueEmpty(Q));
DestroyQueue(Q); // 銷毀隊列Q
}
Ⅲ 《數據結構(C語言版)》pdf下載在線閱讀全文,求百度網盤雲資源
《數據結構(C語言版)》(嚴蔚敏)電子書網盤下載免費在線閱讀
鏈接:
書名:數據結構(C語言版)
作者:嚴蔚敏
豆瓣評分:6.1
出版社:清華大學出版社
出版年份:2012-5
頁數:335
內容簡介:
《數據結構》(C語言版)是為「數據結構」課程編寫的教材,也可作為學習數據結構及其演算法的C程序設計的參數教材。
本書的前半部分從抽象數據類型的角度討論各種基本類型的數據結構及其應用;後半部分主要討論查找和排序的各種實現方法及其綜合分析比較。其內容和章節編排1992年4月出版的《數據結構》(第二版)基本一致,但在本書中更突出了抽象數據類型的概念。全書採用類C語言作為數據結構和演算法的描述語言。
作者簡介:
嚴蔚敏 清華大學計算機系教授,長期從事數據結構教學和教材建設,和吳偉民合作編著的《數據結構》曾獲「第二屆普通高等學校優秀教材全國特等獎」和「1996年度國家科學技術進步獎三等獎」。
吳偉民 廣東工業大學計算機學院副教授,碩士生導師。廣東省計算機學會圖像圖形分會秘書長。長期從事數據結構教學和系列教材建設。主要研究領域:數據結構和演算法、可是計算、編譯和虛擬機技術、智能系統等。和嚴蔚敏合作編著的《數據結構》曾獲「第二屆普通高等學校優秀教材全國特等獎」和「1996年度國家科學技術進步獎三等獎」。
Ⅳ 《數據結構(C語言版)》pdf下載在線閱讀,求百度網盤雲資源
《數據結構(C語言版)》(嚴蔚敏)電子書網盤下載免費在線閱讀
資源鏈接:
鏈接:https://pan..com/s/1BmtD5k3mLtJZO36Xw_Hq3w
書名:數據結構(C語言版)
作者:嚴蔚敏
豆瓣評分:6.1
出版社:清華大學出版社
出版年份:2012-5
頁數:335
內容簡介:
《數據結構》(C語言版)是為「數據結構」課程編寫的教材,也可作為學習數據結構及其演算法的C程序設計的參數教材。
本書的前半部分從抽象數據類型的角度討論各種基本類型的數據結構及其應用;後半部分主要討論查找和排序的各種實現方法及其綜合分析比較。其內容和章節編排1992年4月出版的《數據結構》(第二版)基本一致,但在本書中更突出了抽象數據類型的概念。全書採用類C語言作為數據結構和演算法的描述語言。
本書概念表述嚴謹,邏輯推理嚴密,語言精煉,用詞達意,並有配套出版的《數據結構題集》(C語言版),便於教學,又便於自學。
本書後附有光碟。光碟內容可在DOS環境下運行的以類C語言描述的「數據結構演算法動態模擬輔助教學軟體,以及在Windows環境下運行的以類PASCAL或類C兩種語言描述的「數據結構演算法動態模擬輔助教學軟體」。
本書可作為計算機類專業或信息類相關專業的本科或專科教材,也可供從事計算機工程與應用工作的科技工作者參考。
作者簡介:
嚴蔚敏 清華大學計算機系教授,長期從事數據結構教學和教材建設,和吳偉民合作編著的《數據結構》曾獲「第二屆普通高等學校優秀教材全國特等獎」和「1996年度國家科學技術進步獎三等獎」。
吳偉民 廣東工業大學計算機學院副教授,碩士生導師。廣東省計算機學會圖像圖形分會秘書長。長期從事數據結構教學和系列教材建設。主要研究領域:數據結構和演算法、可是計算、編譯和虛擬機技術、智能系統等。和嚴蔚敏合作編著的《數據結構》曾獲「第二屆普通高等學校優秀教材全國特等獎」和「1996年度國家科學技術進步獎三等獎」。
Ⅳ 求數據結構(c語言版)好的視頻教程
05嚴蔚敏
鏈接:https://pan..com/s/1yX9mrSTpXmC-yknUK4eL2w
若資源有問題歡迎追問~
Ⅵ 怎麼學習數據結構(嚴蔚敏的c語言版)
1、如果你沒有學過C語言,或者C語言學的不好的時候把數據結構當成一本數學書來學,它所講述的都是一些簡單的圖論。在你的大腦中的主線不能丟失:線性結構,樹結構和圖結構。當你不再考慮復雜的程序設計時,僅僅研究個個離散點之間的關系,似乎數據結構也就不會那麼難了。
2、學習好了抽象的離散點關系後,再鞏固一下你的C語言水平,書中描述的都是類C。因此你只要學習簡單的C定義、判斷、循環語句就基本能看的懂課本中所有程序了。
3、以上都完成後,從數據結構的線性表開始。線性表中順序表似乎是為你學習C語言設計的,學好線性表的鏈表是你起步的關鍵。後面的樹結構,圖結構,排序,查找都少不了鏈式結構,往往這個也是最難的。
4、看程序的時候一定要自己在紙上畫畫,最好先學會畫程序的流程圖,也許那樣你學程序也就會更快一些。
5、數據結構是程序設計的最基本也是最有用的地方,學完之後你會受益匪淺的,也許這本書可以決定你以後的道路或者命運。
6、c語言是最基礎的課程,考計算機的研肯定的學c語言了,怎麼不提前准備呀,嚴蔚敏的書太理論了,我建議你看一本《數據結構案例教程(c語言版)》的書,這本書主要是講的案例,就是演算法的實現,你在結合嚴蔚敏的書看理論,我覺得這樣會容易點吧,數據結構是建立在某一種語言的基礎上實現的,如果你會C++JAVA等語言的話,你當務之急就不要看c語言版的數據結構,C++版的或是JAVA版的數據結構都行,你先拿先來然後再學c語言。
Ⅶ 誰有好一點的C語言,C++,數據結構視頻教程
05嚴蔚敏
鏈接:https://pan..com/s/1yX9mrSTpXmC-yknUK4eL2w
若資源有問題歡迎追問~
Ⅷ 數據結構實用教程c語言版第二版這本書有什麼作用
講的一些數據結構
學懂後能寫出
運行效率
更高更高質量的代碼
Ⅸ 數據結構(c語言版)有什麼參考書
推薦《數據結構》(c語言版)(清華大學出版社,嚴蔚敏,吳偉民編著)教材。
《清華大學計算機系列教材:數據結構(C語言版)》的第1章綜述數據、數據結構和抽象數據類型等基本概念;第2章至第7章從抽象數據類型的角度,分別討論線性表、棧、隊列、串、數組、廣義表、樹和二叉樹以及圖等基本類型的數據結構及其應用。
第8章綜合介紹操作系統和編譯程序中涉及的動態存儲管理的基本技術。
第9章至第11章討論查找和排序,除了介紹各種實現方法之外,並著重從時間上進行定性或定量的分析和比較;第12章介紹常用的文件結構。
本書可作為計算機類專業或信息類相關專業的本科或專科教材。