新書推薦:
《
美国小史(揭秘“美国何以成为美国”,理解美国的经典入门读物)
》
售價:HK$
81.4
《
中国古代北方民族史丛书——东胡史
》
售價:HK$
87.8
《
巨人传(插图珍藏本)
》
售價:HK$
705.6
《
地下(村上春树沙林毒气事件的长篇纪实)
》
售價:HK$
76.7
《
偿还:债务与财富的阴暗面
》
售價:HK$
80.2
《
清华大学藏战国竹简校释(壹):《命训》诸篇
》
售價:HK$
94.4
《
封建社会农民战争问题导论(光启文库)
》
售價:HK$
68.4
《
虚弱的反攻:开禧北伐
》
售價:HK$
92.0
|
編輯推薦: |
提供配套的教学资源,包括电子课件、例题源代码、课后习题答案等。
每一章均提供涵盖所有知识点的综合应用实例,课后习题选取了部分考研试题,以巩固所学知识点。
所有代码均上机调试通过,并给出程序的运行结果。
|
內容簡介: |
《数据结构(C语言实现)》内容编排符合当前高等院校“数据结构”课程的现状和发展趋势,知识点涵盖全面,案例和课后习题丰富,每章均有综合案例以巩固对知识点的掌握程度,突出实用性和实践性。《数据结构(C语言实现)》共9章,内容包括绪论、线性表、栈与队列、串、数组与广义表、树、图、查找及排序。《数据结构(C语言实现)》采用C语言作为数据结构和算法的描述语言。
《数据结构(C语言实现)》可作为高等院校计算机、软件工程等相关专业“数据结构”课程的教材,也可作为从事计算机软件开发、准备考取计算机专业研究生和参加软考的人员的参考用书。
|
目錄:
|
前言
第1章绪论1
1.1数据结构的基本概念1
1.2抽象数据类型3
1.2.1抽象数据类型的定义3
1.2.2抽象数据类型的描述3
1.3数据的逻辑结构与存储结构4
1.3.1逻辑结构4
1.3.2存储结构5
1.4算法的特性与算法的描述6
1.4.1算法的定义6
1.4.2算法的特性6
1.4.3算法的描述6
1.5算法分析7
1.5.1算法设计的要求8
1.5.2算法时间复杂度8
1.5.3算法空间复杂度13
1.6关于数据结构课程的地位及
学习方法13
习题14
第2章线性表17
2.1线性表的概念及运算17
2.1.1线性表的逻辑结构17
2.1.2线性表的抽象数据类型18
2.2线性表的顺序表示与实现19
2.2.1线性表的顺序存储19
2.2.2顺序表的基本运算20
2.2.3基本操作算法分析23
2.2.4顺序表应用举例23
2.3线性表的链式表示与实现27
2.3.1单链表的存储结构27
2.3.2单链表上的基本运算28
2.3.3单链表应用举例33
2.3.4循环单链表38
2.3.5双向链表41
2.4*静态链表43
2.4.1静态链表的存储结构44
2.4.2静态链表的实现44
2.4.3静态链表应用举例46
2.5线性表应用举例:一元多项式的
表示与相乘48
2.5.1一元多项式的表示48
2.5.2一元多项式的相乘49
2.6小结53
习题54
第3章栈与队列59
3.1栈的表示与实现59
3.1.1栈的定义59
3.1.2栈的抽象数据类型60
3.1.3顺序栈61
3.1.4链栈65
3.2栈的应用68
3.2.1数制转换68
3.2.2行编辑程序68
3.2.3算术表达式求值70
3.3递归76
3.3.1递归的定义76
3.3.2消除递归79
3.4队列的表示与实现82
3.4.1队列的定义82
3.4.2队列的抽象数据类型82
3.4.3顺序队列83
3.4.4顺序循环队列85
3.4.5*双端队列88
3.4.6链式队列88
3.4.7链式队列的实现90
3.5队列的应用92
3.5.1队列在杨辉三角中的应用92
3.5.2队列在回文中的应用94
3.6综合案例:停车场管理97
3.7小结105
习题105
第4章串109
4.1串109
4.1.1串的定义109
4.1.2串的抽象数据类型109
4.2串的表示与实现111
4.2.1定长顺序存储表示与实现111
4.2.2*堆串的存储分配表示与实现117
4.2.3*块链存储表示与实现123
4.3串的模式匹配128
4.3.1Brute-Force经典算法128
4.3.2KMP算法130
4.3.3模式匹配应用举例134
4.4小结138
习题138
第5章数组与广义表141
5.1数组的定义与运算141
5.1.1数组的定义141
5.1.2数组的抽象数据类型142
5.1.3数组的顺序表示与实现142
5.2特殊矩阵的压缩存储146
5.2.1对称矩阵的压缩存储147
5.2.2三角矩阵的压缩存储147
5.2.3对角矩阵的压缩存储148
5.3稀疏矩阵的压缩存储149
5.3.1稀疏矩阵的定义149
5.3.2稀疏矩阵的抽象数据类型149
5.3.3稀疏矩阵的三元组表示与实现150
5.3.4稀疏矩阵应用举例156
5.3.5稀疏矩阵的十字链表表示与实现160
5.4广义表164
5.4.1广义表的定义164
5.4.2广义表的抽象数据类型165
5.5广义表的头尾链表表示与实现165
5.5.1广义表的头尾链表存储结构166
5.5.2广义表的基本运算166
5.5.3广义表应用举例169
5.6广义表的扩展线性链表表示与
实现172
5.6.1广义表的扩展线性链表存储172
5.6.2广义表的基本运算173
5.6.3采用扩展线性链表存储结构的
广义表应用举例175
5.7广义表应用举例:导师-本科生
制管理178
5.8小结183
习题184
第6章树188
6.1树188
6.1.1树的定义188
6.1.2树的逻辑表示189
6.1.3树的抽象数据类型190
6.2二叉树191
6.2.1二叉树的定义191
6.2.2二叉树的性质193
6.2.3二叉树的抽象数据类型195
6.2.4二叉树的存储表示与实现196
6.3二叉树的遍历201
6.3.1二叉树遍历的定义202
6.3.2二叉树的先序遍历202
6.3.3二叉树的中序遍历203
6.3.4二叉树的后序遍历205
6.4二叉树的线索化207
6.4.1二叉树的线索化定义207
6.4.2二叉树的线索化实现209
6.4.3线索二叉树的遍历210
6.4.4线索二叉树应用举例212
6.5树、森林与二叉树215
6.5.1树的存储结构215
6.5.2树转换为二叉树217
6.5.3森林转换为二叉树219
6.5.4二叉树转换为树和森林219
6.5.5树和森林的遍历220
6.6综合应用举例:哈夫曼树221
6.6.1哈夫曼树的定义221
6.6.2哈夫曼编码222
6.6.3哈夫曼编码算法的实现223
6.7小结226
习题227
第7章图232
7.1图的定义与相关概念232
7.1.1图的定义232
7.1.2图的相关概念233
7.1.3图的抽象数据类型235
7.2图的存储结构236
7.2.1邻接矩阵表示法236
7.2.2邻接表表示法240
7.2.3十字链表表示法244
7.2.4多重表表示法245
7.3图的遍历246
7.3.1图的深度优先遍历246
7.3.2图的广度优先遍历249
7.4图的连通性问题251
7.4.1无向图的连通分量与生成树251
7.4.2最小生成树252
7.5有向无环图257
7.5.1AOV网与拓扑排序257
7.5.2AOE网与关键路径260
7.6最短路径264
7.6.1从某个顶点到其余各顶点的
最短路径264
7.6.2每一对顶点之间的最短路径271
7.7图的应用举例275
7.7.1距离某个顶点的最短路径长度为
k的所有顶点275
7.7.2求图中顶点u到顶点v的简单
路径277
7.8图的综合应用:铁路交通线路
规划279
7.9小结286
习题287
第8章查找291
8.1查找的基本概念291
8.2静态查找292
8.2.1顺序表的查找292
8.2.2有序顺序表的查找293
8.2.3索引顺序表的查找295
8.3动态查找296
8.3.1二叉排序树296
8.3.2*平衡二叉树303
8.4*B-树与B+树311
8.4.1B-树311
8.4.2B+树319
8.5哈希表320
8.5.1哈希表的定义320
8.5.2哈希函数的构造方法321
8.5.3处理冲突的方法322
8.5.4哈希表查找与分析324
8.5.5哈希表应用举例324
8.6小结328
习题329
第9章排序332
9.1排序的基本概念332
9.2插入排序333
9.2.1直接插入排序333
9.2.2折半插入排序335
9.2.3希尔排序336
9.2.4插入排序应用举例338
9.3选择排序339
9.3.1简单选择排序339
9.3.2堆排序340
9.4交换排序346
9.4.1冒泡排序346
9.4.2快速排序347
9.4.3交换排序应用举例350
9.5归并排序353
9.6基数排序354
9.6.1基数排序算法355
9.6.2基数排序应用举例357
9.7小结360
习题361
参考文献364
|
內容試閱:
|
数据结构是高等院校计算机科学与技术、软件工程等相关专业的一门重要的专业基础课程,是许多后续课程的重要基础,也是研究计算机科学与工程问题的基础,它对软件设计的发展起着举足轻重的作用。当用计算机来解决实际问题时,就会涉及数据与数据之间关系的表示与处理,而这正是数据结构研究的对象。通过对数据结构的学习,可为后续课程,特别是算法设计和软件开发等方面课程的学习打下坚实的知识基础。
本书较系统地介绍了数据结构中的线性结构、树形结构、图结构及查找、排序技术,阐述了各种数据结构的逻辑关系,讨论了它们在计算机中的存储表示及其运算。本书理论与技术并重,结合工作实际对数据结构中的抽象概念和知识点进行详细讲解,通过丰富的图表和实例、完整的代码帮助读者理解算法思想,使其学会运用数据结构知识解决日常生活中的实际问题并能用算法实现。本书选取的案例丰富、典型,每一章均提供涵盖所有知识点的综合应用实例,课后习题题型多样,涵盖知识点丰富,选取了部分考研试题,以巩固所学知识点。全书采用C语言作为描述语言,并有详细的讲解和注释,所有代码均上机调试通过,并给出程序的运行结果。推荐使用Visual C++ 6.0及以上版本开发工具调试程序。
本书共分为9章,分别为绪论、线性表、栈与队列、串、数组与广义表、树、图、查找和排序。
第1章:如果读者刚接触数据结构,这一章将告诉您数据结构是什么,以及本书的学习目标、学习方法和学习内容;另外,还介绍了本书对算法的描述方法。
第2章:主要介绍线性表。首先讲解线性表的逻辑结构,然后介绍线性表的各种常用存储结构,在每一节均给出了算法的具体应用。通过学习这一章,读者可以掌握顺序表、动态链表和静态链表的操作。
第3章:主要介绍操作受限的线性表——栈和队列,内容包括栈的定义,栈的基本操作及栈与递归的转化,队列的概念,顺序队列和链式队列的运算。
第4章:主要介绍一种特殊的线性表——串。首先介绍串的概念,然后介绍串的各种存储表示,以及串的模式匹配算法。
第5章:主要介绍数组与广义表。首先介绍数组的概念,数组(矩阵)的存储结构及运算,几种特殊矩阵;然后介绍广义表的概念,广义表的两种存储方式,广义表的操作实现。
第6章:主要介绍非线性数据结构——树和二叉树。首先介绍树和二叉树的概念,然后介绍树和二叉树的存储表示,二叉树的性质,二叉树的遍历和线索化,树、森林与二叉树的转换及哈夫曼树。
第7章:主要介绍非线性数据结构——图。首先介绍图的概念和存储结构,然后介绍图的遍历、最小生成树、拓扑排序、关键路径及最短路径。
第8章:主要介绍数据结构的常用技术——查找。首先介绍查找的概念,然后结合具体实例介绍各种查找算法,并给出了完整程序。
第9章:主要介绍数据结构的常用技术——排序。首先介绍排序的相关概念,然后介绍各种排序技术,并给出了具体实现算法。
目录中带有“*”标记的章节为选学内容。
本书提供配套的教学资源,包括电子课件、例题源代码、课后习题答案等。读者可通过机工教育服务网下载,也可与作者联系索取。邮件地址:235668080@qq.com。
参与本书编写的有陈锐、马军霞、张建伟、张志锋、郑倩、桑永宣、谷培培、王昌海、张世征、张亚洲。其中,陈锐编写第2章和第6章,马军霞编写第5章,张建伟编写第9章,郑倩编写第3章,王昌海编写第8章,其他章节由张志锋、桑永宣、谷培培、张世征、张亚洲编写。
在本书的出版过程中,得到了郑州轻工业大学和机械工业出版社的大力支持,在此表示衷心感谢。
在本书编写过程中,参阅了大量相关教材、著作,个别案例也参考了网络资源,在此向各位原著者致敬!
由于作者水平有限,书中难免存在一些不足之处,恳请读者批评指正。
|
|