新書推薦:
《
敦煌写本文献学(增订本)
》
售價:NT$
1010.0
《
耕读史
》
售價:NT$
500.0
《
地理计算与R语言
》
售價:NT$
551.0
《
沈括的知识世界:一种闻见主义的实践(中华学术译丛)
》
售價:NT$
398.0
《
大思维:哥伦比亚商学院六步创新思维模型
》
售價:NT$
332.0
《
宏观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】
》
售價:NT$
709.0
《
UE5虚幻引擎必修课(视频教学版)
》
售價:NT$
505.0
《
真需求
》
售價:NT$
505.0
內容簡介:
本书按照“全国硕士研究生招生考试计算机科学与技术学科联考计算机学科专业基础综合考试大纲”的要求编写,基本涵盖所有知识点,并加入部分高校及全国统一考试真题作为自测题,同时给出参考答案和题目解析。本书主要介绍各种常用的经典数据结构(如线性表、栈、队列、串、数组、树、图、集合等)和算法,并在时间复杂度和空间复杂度之间进行平衡与取舍。 本书将C++语言作为数据结构的算法描述语言,将数据结构与面向对象技术有机结合。书中的算法讲解都有完整的C++代码实现,并在Visual Studio 2010环境下编译通过。
關於作者:
冯广慧,2004年毕业于吉林大学获工学学士学位,2007年毕业于吉林大学研究生院获工学硕士学位,自2007年起一直从事于《算法与数据结构》课程的一线教学和考研辅导工作,对该课程有深入研究,参编《C语言程序设计教程》、《Access数据库程序设计真题考点分析与讲解》等多部著作。
目錄 :
第1章概论1
1.1什么是数据结构1
1.2基本概念和术语4
1.3算法和算法分析7
1.3.1算法的定义及特性7
1.3.2算法的设计要求8
1.3.3算法效率的衡量方法9
1.3.4算法的时间复杂度10
1.3.5算法的空间复杂度15
1.4抽象数据类型16
习题18
第2章线性表20
2.1线性表的类型定义20
2.1.1线性表的概念20
2.1.2线性表的抽象数据类型21
2.2线性表的顺序表示和实现22
2.2.1线性表的顺序表示22
2.2.2顺序表基本运算的实现23
2.3线性表的链式表示和实现28
2.3.1线性表的链式表示29
2.3.2单链表上基本运算的实现32
2.4双链表40
2.5循环链表44
2.6线性表实现方法的比较46
2.7算法设计举例47
习题52
第3章栈和队列55
3.1栈55
3.1.1栈的类型定义55
3.1.2顺序栈的表示和实现57
3.1.3链栈的表示和实现60
3.2栈的应用举例62
3.2.1十进制数转换为其他进制数62
3.2.2表达式中括号的匹配检查63
3.2.3表达式求值64
3.2.4利用栈消除递归72
3.3队列77
3.3.1队列的类型定义77
3.3.2循环队列队列的顺序表示和
实现78
3.3.3链队列队列的链式表示和
实现82
3.4算法设计举例83
习题87
第4章串90
4.1串的基本概念90
4.2串的表示和实现91
4.2.1串的顺序存储结构91
4.2.2串的链式存储结构94
4.3串的模式匹配95
4.3.1朴素的模式匹配算法95
4.3.2KMP算法96
习题101
第5章数组104
5.1数组的基本概念104
5.2矩阵的压缩存储107
5.2.1特殊矩阵107
5.2.2稀疏矩阵110
5.3算法设计举例117
习题121
第6章树和二叉树124
6.1树的概念124
6.2二叉树的概念和性质126
6.2.1二叉树的概念和抽象数据
类型126
6.2.2二叉树的性质129
6.3二叉树的表示和实现131
6.3.1二叉树的存储结构131
6.3.2二叉树的遍历运算133
6.3.3二叉树的其他基本运算140
6.4树和森林142
6.4.1树的存储结构143
6.4.2树、森林和二叉树的相互
转换146
6.4.3树和森林的遍历运算148
6.4.4树和森林的其他基本运算151
*6.5线索二叉树154
6.5.1线索二叉树的概念154
6.5.2线索二叉树的基本运算157
6.6算法设计举例161
习题162
第7章树和二叉树的应用166
*7.1表达式树166
7.2哈夫曼树和哈夫曼编码171
7.2.1哈夫曼树171
7.2.2哈夫曼编码175
7.3堆和优先级队列178
7.3.1堆178
7.3.2优先级队列179
*7.4并查集184
7.5算法设计举例187
习题189
第8章图191
8.1图的概念191
8.2图的存储结构196
8.2.1邻接矩阵196
8.2.2邻接表200
*8.2.3十字链表205
*8.2.4邻接多重表205
8.3图的遍历206
8.3.1深度优先遍历207
8.3.2广度优先遍历209
8.3.3图的连通分量和生成树212
习题213
第9章图的应用217
9.1最小生成树217
9.1.1最小生成树的概念217
9.1.2Prim算法218
9.1.3Kruskal算法222
9.2有向无环图及其应用225
9.2.1拓扑排序225
9.2.2关键路径230
9.3最短路径236
9.3.1单源点最短路径236
9.3.2每对顶点之间的最短路径240
习题243
第10章集合与查找247
10.1基本概念247
10.2静态查找表上的查找248
10.2.1顺序查找248
10.2.2折半查找250
10.2.3分块查找254
10.3动态查找表上的查找256
10.3.1二叉查找树256
10.3.2平衡二叉树263
*10.3.3B树275
*10.3.4B 树280
*10.3.5字典树281
10.4算法设计举例282
习题285
第11章散列表288
11.1散列表的概念288
11.2构造散列函数的方法289
11.2.1直接定址法289
11.2.2折叠法289
11.2.3数字分析法289
11.2.4平方取中法290
11.2.5除留余数法290
11.3解决冲突的方法291
11.3.1闭散列法291
11.3.2开散列法293
11.4散列表的实现294
11.4.1闭散列表的表示和实现294
11.4.2开散列表的表示和实现298
11.4.3闭散列表与开散列表的
比较302
11.5散列表的查找性能分析302
习题303
第12章排序306
12.1排序的基本概念306
12.2插入排序307
12.2.1直接插入排序307
12.2.2折半插入排序308
12.2.3希尔排序309
12.3交换排序310
12.3.1冒泡排序310
12.3.2快速排序311
12.4选择排序315
12.4.1直接选择排序315
12.4.2堆排序316
*12.4.3锦标赛排序320
12.5归并排序320
*12.6基数排序322
12.7各种内部排序方法的比较324
*12.8外部排序327
12.8.1置换选择排序328
12.8.2多路归并排序330
习题331
附录A上机实验参考题目334
参考文献336
內容試閱 :
随着计算机技术的飞速发展,计算机在各个学科和领域得到广泛应用,而这些应用所面临的首要问题就是对于信息量大、种类繁多、结构复杂的数据和数据关系的处理,因此必须设计好数据结构和数据组织方式,以便有效地实现数据存储、数据传输和数据处理等操作。数据结构主要研究数据的逻辑结构,数据在计算机中的存储实现,以及处理不同结构数据的算法。我们研究数据结构的目的是编写更高效的程序,而高效、简捷的程序取决于数据结构和算法的设计。
数据结构是计算机程序设计的重要理论基础,是计算机专业最为核心的一门专业基础课程,也是非计算机专业的主要选修课程,同时还是一门考研课程。数据结构前承高级语言程序设计和离散数学,后接操作系统、编译原理、数据库原理等专业课程,为研制开发各种系统和应用软件奠定理论和实践基础。该课程的学习效果不仅关系到后续课程的学习,而且直接关系到软件设计水平的提高和专业素质的培养,在计算机学科教育中有非常重要的作用。
考虑到初学者普遍对算法设计问题感到比较困难且思路不明确,本书不仅注重基本概念的引入和阐述,更加注重算法的设计、分析与实现,强调实践环节的重要性。本书具有如下特点。
(1)将C语言作为数据结构的算法描述语言,让数据结构与面向对象技术有机结合。在设置例题时,充分考虑应用型人才培养的需求,更加侧重于算法的程序实现。书中的算法讲解都有风格优美而完整的C代码实现,并在Visual Studio 2010环境下编译通过,这将有利于读者掌握算法的程序实现及对算法进行分析与比较。
(2)按照全国硕士研究生招生考试计算机科学与技术学科联考计算机学科专业基础综合考试大纲的要求编写,基本涵盖该考试大纲所有的知识点,并在重要知识点之后附加部分高校及全国统一考试真题作为自测题。读者在完成相应问题的同时,既能巩固知识点,又能有选择地提高能力,还能有效地检验阶段学习效果。
(3)系统、全面地介绍各种传统的数据结构,按照线性结构、树结构、图结构、集合结构四大模块顺序安排内容。部分章节还设有算法设计举例,意在提高初学者的算法分析和设计的能力。
全书分为12章。
第1章介绍基础知识,讨论什么是数据结构,给出数据结构和算法的相关概念与描述方法,介绍算法分析的基本方法。
线性结构包括第2~5章。第2章介绍线性表的有关概念及其基本操作,是后续章节的基础。第3章在第2章的基础上讨论操作受限的线性表栈与队列。第4章讨论数据元素为字符的特殊的线性表串。第5章介绍程序设计中常用的数据类型数组。
树结构包括第6、7章。第6章介绍树和二叉树的有关概念及基本操作。第7章讨论树和二叉树的应用。
图结构包括第8、9章。第8章介绍图的基本概念、存储结构及遍历运算。第9章讨论图的应用。
集合结构包括第10~12章。第10章以集合作为数据模型,讨论查找的方法和技术,包括静态查找表和动态查找表。第11章介绍一种专用于集合的存储和检索的数据结构散列表。第12章介绍一些常用的排序算法,包括内部排序和外部排序。
本书由教学一线的教师主笔,结合作者多年的教学经验和教学素材,针对数据结构这门课程的特点撰写而成,目的是使学生在扎实的编程能力基础上,掌握如何合理地组织数据、有效地存储和处理数据,并学会在时间复杂度和空间复杂度之间进行平衡与取舍。本书满足多样化的人才培养模式的需求,既可作为普通高等院校计算机及相关专业的数据结构课程教材,也可作为考研参考书,还可作为工程技术人员的工具书。在本书目录中加*的章节可以酌情处理。
在本书的编写和出版过程中得到电子工业出版社冉哲编辑和《算法与数据结构考研试题精析》的编者陈守孔教授的诸多帮助,得到吉林大学珠海学院领导的大力支持,在此深表感谢。
由于作者水平所限,加上计算机学科的发展十分迅速,书中难免有不妥之处,恳请读者批评指正。
作 者