新書推薦:
《
惜华年(全两册)
》
售價:NT$
320.0
《
甲骨文丛书·古代中国的军事文化
》
售價:NT$
454.0
《
中国王朝内争实录(套装全4册):从未见过的王朝内争编著史
》
售價:NT$
1112.0
《
半导体纳米器件:物理、技术和应用
》
售價:NT$
806.0
《
创客精选项目设计与制作 第2版 刘笑笑 颜志勇 严国陶
》
售價:NT$
281.0
《
佛山华家班粤菜传承 华家班59位大厨 102道粤菜 图文并茂 菜式制作视频 粤菜故事技法 佛山传统文化 广东科技
》
售價:NT$
1010.0
《
武人琴音(十周年纪念版 逝去的武林系列收官之作 形意拳一门三代:尚云祥、韩伯言、韩瑜的人生故事 凸显百年武人命运)
》
售價:NT$
199.0
《
剑桥斯堪的纳维亚戏剧史(剑桥世界戏剧史译丛)
》
售價:NT$
704.0
編輯推薦:
本书系统地介绍了各种常用的数据结构以及查找、排序的各种算法。全书共分10章,包括绪论、线性表、栈和队列、串、数组和广义表、树和二叉树、图、查找、排序、实验等内容。每章都配有一定数量的习题,以方便学生巩固所学知识。
全书采用面向对象的C语言作为数据结构和算法的描述语言,书中所有算法都在Visual C 6.0开发环境中进行了测试。
适合作为以C语言为基础的数据结构教学的推荐教材。
內容簡介:
本书采用C 语言介绍数据结构和算法,主要内容包括数据结构的概念和术语、线性表、栈和队列、串、数组与广义表、树与二叉树、图及应用。每章之后配有多种类型的习题,方便读者加深对所学知识的理解。教材力求语言通俗、算法表达精炼、注重应用实践。 本书可供本科计算机及相关专业的教材,也可供自学人员学习参考
關於作者:
主讲《数据结构》等课程;主持主研科研课题二十余项,获河北省科技进步奖三等奖一项,发明专利一项;第一作者发表科研教改论文三十多篇
目錄 :
第1章绪论1
1.1数据结构的研究内容1
1.2数据结构的基本概念3
1.2.1数据、数据元素、数据项和数据对象3
1.2.2数据结构4
1.3抽象数据类型及其实现6
1.3.1数据类型6
1.3.2抽象数据类型6
1.3.3C的类和对象7
1.3.4C的动态存储分配11
1.3.5C的模板11
1.4算法和算法分析15
1.4.1算法15
1.4.2算法分析16
本章小结20
习题121
第2章线性表23
2.1线性表的逻辑结构23
2.2线性表的顺序表示和实现25
2.2.1线性表的顺序存储结构顺序表25
2.2.2顺序表的实现26
2.3线性表的链式表示和实现33
2.3.1线性表的链式存储结构链表33
2.3.2单链表的定义和表示33
2.3.3单链表的实现34
2.3.4双链表42
2.3.5循环链表44
2.4顺序表和链表的比较45
2.5线性表的应用46
本章小结52
习题252第3章栈和队列56
3.1栈56
3.1.1栈的定义56
3.1.2顺序栈的表示和实现58
3.1.3链栈的表示和实现62
3.1.4栈的应用67
3.2队列69
3.2.1队列的定义69
3.2.2循环队列队列的顺序表示和实现71
3.2.3链队队列的链式表示和实现75
3.2.4队列的应用80
本章小结83
习题384
第4章串88
4.1串的定义88
4.2串的存储结构90
4.3串的模式匹配91
本章小结96
习题496
第5章数组和广义表98
5.1数组98
5.1.1数组的基本概念98
5.1.2数组的存储结构99
5.2矩阵100
5.2.1特殊矩阵的压缩存储100
5.2.2稀疏矩阵的压缩存储104
5.3广义表109
5.3.1广义表的定义109
5.3.2广义表的存储结构111
本章小结112
习题5112
第6章树和二叉树116
6.1树116
6.1.1树的定义116
6.1.2树的基本术语116
6.1.3树的抽象数据类型定义118
6.2二叉树119
6.2.1二叉树的定义119
6.2.2二叉树的抽象数据类型定义121
6.2.3二叉树的性质123
6.2.4二叉树的存储结构124
6.2.5二叉链表的实现127
6.3二叉树的遍历133
6.3.1遍历的概念133
6.3.2遍历算法136
6.4线索二叉树144
6.4.1线索二叉树的概念144
6.4.2构造线索二叉树145
6.4.3线索二叉树的遍历148
6.5树和森林149
6.5.1树的存储结构149
6.5.2树和森林与二叉树的转换151
6.5.3树和森林的遍历154
6.6哈夫曼树及其应用155
6.6.1哈夫曼树的基本概念155
6.6.2哈夫曼树的构造算法156
6.6.3哈夫曼编码158
本章小结160
习题6161
第7章图165
7.1图的基本概念165
7.1.1图的定义165
7.1.2基本术语166
7.1.3图的抽象类型定义168
7.2图的存储结构169
7.2.1邻接矩阵169
7.2.2邻接表176
7.2.3十字链表185
7.2.4邻接多重表185
7.3图的遍历186
7.3.1深度优先遍历187
7.3.2广度优先遍历188
7.4图的应用191
7.4.1最小生成树191
7.4.2最短路径197
7.4.3拓扑排序204
7.4.4关键路径208
本章小结213
习题7214
第8章查找219
8.1查找的基本概念219
8.1.1查找的定义219
8.1.2查找算法的性能分析220
8.2基于静态表的查找221
8.2.1顺序查找221
8.2.2折半查找221
8.3二叉排序树223
8.3.1二叉排序树的概念224
8.3.2二叉排序树结点的定义224
8.3.3二叉排序树类的定义和实现225
8.4二叉平衡树231
8.4.1二叉平衡树的概念231
8.4.2二叉平衡树的平衡处理235
8.4.3二叉平衡树的插入操作239
8.5B树和B 树240
8.5.1B树241
8.5.2B 树244
8.6散列表245
8.6.1散列表的概念245
8.6.2常见的散列函数246
8.6.3处理冲突的方法246
本章小结249
习题8249
第9章排序251
9.1排序的基本概念251
9.1.1排序的定义251
9.1.2内排序和外排序251
9.1.3排序用到的类定义251
9.2插入排序252
9.2.1直接插入排序252
9.2.2希尔排序253
9.3交换排序255
9.3.1冒泡排序255
9.3.2快速排序257
9.4选择排序259
9.4.1简单选择排序259
9.4.2堆排序261
9.5归并排序266
9.6各种内部排序算法的分析和比较268
本章小结269
习题9269
第10章实验271
实验1一元多项式求和271
实验2求解约瑟夫问题277
实验3表达式求值280
实验4字符串的加解密285
实验5利用二叉树求解简单算术表达式289
实验6医院选址问题294
附录C程序设计简述299
A.1C程序的基本结构299
A.2C的数据类型300
A.3顺序结构306
A.4选择结构308
A.5循环结构309
A.6数组311
A.7指针和引用315
A.8函数317
A.9结构体319
参考文献322
內容試閱 :
数据结构是计算机及相关专业的核心课程,也是计算机及相关专业研究生入学考试的必考科目。作为计算机及相关专业本科教育的核心课程,着重培养学生的数据结构与算法设计能力、程序设计与实现能力以及对算法的复杂性进行分析的能力。学好该课程不仅对后续专业课程的学习有很大帮助,而且对于开发高效的程序也极为有益。
本书采用面向对象的C语言作为数据结构和算法的描述语言,并使用模板程序设计技术,使所设计的程序更容易实现代码重用。
全书共10章。第1章为绪论,介绍数据结构的基本概念、抽象数据类型及其实现,以及算法和算法分析;第2章为线性表,介绍线性表的顺序存储结构与链式存储结构以及线性表的应用;第3章为栈和队列,介绍栈和队列的顺序存储结构与链式存储结构以及栈和队列的应用;第4章为串,介绍串的定义、存储结构及模式匹配;第5章为数组和广义表,介绍数组、特殊矩阵、稀疏矩阵和广义表的存储结构及实现方法;第6章为树和二叉树,介绍树和二叉树的相关概念、存储结构和各种运算的算法实现,并讨论二叉树在编码中的应用哈夫曼编码;第7章为图,介绍图的基本概念和存储结构,并讨论图的相关应用和相应的实现算法,包括最小生成树、最短路径、拓扑排序和关键路径算法;第8章为查找,介绍各种查找算法及其实现过程;第9章为排序,介绍各种排序算法及其实现过程;第10章为实验,介绍线性表、栈、串、二叉树和图的应用,并给出具体的实验过程。
数据结构是一门理论性强、实践难度较大的课程,为了使学生在深刻理解课程内容的基础上,灵活运用所学的知识解决实际问题,在介绍线性表、栈和队列、树和二叉树、图的相应章节以及第10章的实验中,都设置了数据结构的应用案例,以期通过具体应用深化学生对学习内容的理解,并提高实际应用的能力。另外,除最后一章外,其余各章的最后都给出了一些习题,并特别设计了数据结构的应用与算法设计题目,以强化实践环节。
本书由张淑芬和刘丽编写,编写过程中融入了作者多年的教学经验。张淑芬编写了第1~7、10章,刘丽编写了第8、9章,全书由张淑芬整体构思、统稿。研究生董燕灵、王豪石参与了本书的审稿及代码调试工作。
由于作者水平有限,书中可能存在不足和疏漏之处,敬请读者批评指正。
编者2020年9月