Ⅰ 数据结构(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章介绍常用的文件结构。
本书可作为计算机类专业或信息类相关专业的本科或专科教材。