新書推薦:
《
国术健身 易筋经
》
售價:NT$
152.0
《
古罗马800年
》
售價:NT$
857.0
《
权力与相互依赖(第四版)(中译本修订版)
》
售價:NT$
658.0
《
写出心灵深处的故事:踏上疗愈之旅(修订版)(创意写作书系)
》
售價:NT$
301.0
《
控制权视角下的家族企业管理与传承
》
售價:NT$
398.0
《
冯友兰和青年谈心系列
》
售價:NT$
762.0
《
利他主义的生意:偏爱“非理性”的市场(英国《金融时报》推荐读物!)
》
售價:NT$
352.0
《
认知行为疗法:心理咨询的顶层设计
》
售價:NT$
454.0
|
編輯推薦: |
(1)注重经典C语言程序设计知识的传递,通过实际应用背景强的案例来进行程序的设计与实现,提高学生的问题求解能力;
(2)注重学生计算思维能力、问题求解能力的培养,在经典知识的基础上增加了能力拓展,设计了具有复杂工程背景的问题来引导学生进行问题分析与求解;
(3)配套例题及习题挑战度较高,符合国家级一流本科课程“两性一度”的要求,方便教师组织学生开展问题求解实践、分组研讨等,提高学生的问题求解能力;
(4)提供了教学计划、微课视频,方便教师、学生使用。
|
內容簡介: |
本书是为以数据结构、问题求解为阅读目的的读者编写的教材,以培养读者的数据结构分析、算法设计、问题求解能力为基本目标。本书读者需要掌握程序设计基础知识,并具备一定的编程能力。
本书以数据结构为主线,通过问题和案例引入内容,重点讲解利用数据结构知识求解问题的思路、算法实现与执行过程、能力拓展。全书主要内容为概论、C 编程入门、线性表、堆栈和队列、串、数组和广义表、树与二叉树、图、查找、排序、索引结构等,讲解了栈和队列、KMP、哈夫曼树与编码、最短路径、最小生成树、拓扑排序、关键路径、哈希查找、二叉查找树、B树、B 树、Trie树等经典问题,并提供了能力拓展环节,引导读者开展数据结构应用实践。代码使用C 语言加以描述和实现,并用图解的形式详细描述了算法的执行过程,使读者能够深入了解数据结构相关算法的运行过程和结果。
本书可作为本科院校数据结构的教学用书,也可作为从事数据结构与算法设计的科技人员、算法竞赛选手的参考书及培训教材。
|
目錄:
|
第1章概论1
1.1数据结构简介1
1.2数据结构的研究对象1
1.2.1数据逻辑结构1
1.2.2数据物理结构2
1.2.3数据存储结构2
1.3常用数据结构3
1.3.1数组3
1.3.2栈3
1.3.3队列3
1.3.4链表3
1.3.5树3
1.3.6图4
1.3.7堆4
1.3.8散列(哈希)表4
1.4数据结构常用运算4
1.4.1数据结构常用的运算4
1.4.2算法性能分析5
习题5
第2章C 编程入门6
2.1语法基础6
2.1.1数据类型6
2.1.2输入输出7
2.1.3命名空间7
2.1.4内存分配与回收8
2.1.5引用9
2.1.6内联函数10
2.1.7运算符重载10
2.1.8函数重载11
2.1.9异常11
2.2类与对象13
2.2.1概述13
2.2.2构造函数14
2.2.3对象的定义与使用15
2.2.4默认构造函数15
2.2.5成员初始化列表16
2.2.6this指针17
2.2.7析构函数18
2.3继承18
目录〖3〗2.3.1继承与派生的概念18
2.3.2继承语法形式18
2.3.3访问控制规则19
2.3.4派生类构造函数定义20
2.3.5派生类构造函数与析构函数调用次序20
2.3.6构造函数与析构函数构造规则23
2.4多态25
2.4.1多态的概念25
2.4.2虚函数25
2.4.3虚析构函数27
2.4.4纯虚函数与抽象类28
2.5模板与容器29
2.5.1模板概念29
2.5.2函数模板30
2.5.3类模板30
2.5.4容器31
2.5.5迭代器32
2.5.6关联式容器32
2.5.7算法33
2.6能力拓展34
2.6.1C#语言索引器模拟34
2.6.2数据访问服务器模拟35
习题39
第3章线性表40
3.1线性表概述40
3.2线性表的定义及基本操作40
3.3线性表存储结构41
3.3.1线性表的顺序存储结构41
3.3.2线性表的链表存储结构41
3.4线性表的实现41
3.4.1单链表41
3.4.2双向链表45
3.4.3循环链表46
3.5能力拓展47
3.5.1判断链表中是否存在环47
3.5.2约瑟夫环49
习题50
第4章堆栈和队列53
4.1堆栈53
4.1.1堆栈的定义53
4.1.2堆栈的基本操作及抽象数据类型描述53
4.2堆栈的存储结构及实现54
4.2.1堆栈的顺序存储结构及类的实现54
4.2.2堆栈的链表存储结构及类的实现56
4.3队列59
4.3.1队列的定义59
4.3.2队列的基本操作及抽象数据类型描述59
4.4队列的存储结构及实现60
4.4.1队列的顺序存储结构及类的实现60
4.4.2队列的链表存储结构及类的实现63
4.5堆栈和队列的应用场景65
4.5.1堆栈的应用场景65
4.5.2队列的应用场景66
4.6能力拓展66
4.6.1波兰表达式求值66
4.6.2银行排队模拟68
习题72
第5章串75
5.1串的定义75
5.1.1串的基本概念75
5.1.2抽象数据类型定义75
5.2串的实现76
5.2.1串的构造76
5.2.2串的赋值77
5.2.3子串截取78
5.2.4子串插入78
5.2.5串的复制80
5.2.6串的比较81
5.2.7串的拼接81
5.3串的模式匹配算法82
5.3.1暴力匹配82
5.3.2KMP匹配算法83
5.3.3改进的 KMP 算法87
5.4能力拓展88
习题90
第6章数组和广义表93
6.1数组的基本概念93
6.1.1数组的定义93
6.1.2数组的基本操作93
6.2数组的存储结构与抽象数据类型描述94
6.3特殊矩阵的压缩存储96
6.3.1对称矩阵96
6.3.2三角矩阵98
6.3.3对角矩阵99
6.4稀疏矩阵的压缩存储100
6.4.1稀疏矩阵的顺序存储结构——三元组顺序表101
6.4.2稀疏矩阵的链式存储结构——十字链表103
6.5广义表104
6.5.1广义表的定义和基本运算104
6.5.2广义表的存储105
6.6能力拓展106
习题107
第7章树与二叉树111
7.1树的概念111
7.2二叉树112
7.2.1二叉树的定义112
7.2.2二叉树的性质113
7.2.3二叉树的存储结构114
7.3二叉树的抽象数据类型描述116
7.4二叉树的操作117
7.4.1前序遍历117
7.4.2二叉树的构建118
7.4.3中序遍历119
7.4.4后序遍历119
7.4.5层序遍历120
7.4.6线索二叉树120
7.5二叉树与树、森林的转换123
7.5.1树与二叉树的转换123
7.5.2森林与二叉树的转换123
7.6树的存储结构125
7.6.1按树的度进行表示125
7.6.2孩子兄弟表示法126
7.7树的遍历127
7.7.1一般树的遍历127
7.7.2森林的遍历128
7.8哈夫曼树129
7.8.1概念129
7.8.2哈夫曼树的构造129
7.8.3哈夫曼树的实现130
7.8.4哈夫曼编码132
7.9能力拓展134
7.9.1根据树的前序和中序构造树134
7.9.2判断一棵树是否为平衡二叉树135
习题137
第8章图139
8.1图的基本概念139
8.2图的存储结构139
8.2.1图的邻接矩阵139
8.2.2图的邻接表140
8.2.3图的抽象数据类型描述141
8.2.4图类的实现141
8.3图的遍历与图的连通性142
8.3.1图的深度优先遍历142
8.3.2图的广度优先遍历144
8.3.3图的连通性和连通分量145
8.4图的最小生成树147
8.4.1最小生成树的基本概念147
8.4.2普里姆算法147
8.4.3克鲁斯卡尔算法150
8.5最短路径153
8.5.1单源最短路径算法153
8.5.2多源最短路径算法156
8.6拓扑排序与关键路径160
8.6.1拓扑排序160
8.6.2关键路径163
8.7能力拓展166
8.7.1迷宫最短路径求解166
8.7.2解不等式169
习题171
第9章查找175
9.1概述175
9.2静态查找表175
9.2.1顺序查找175
9.2.2折半查找176
9.2.3分块查找177
9.3动态查找表179
9.3.1二叉排序树179
9.3.2平衡二叉树183
9.4哈希查找185
9.4.1哈希函数186
9.4.2处理冲突的方法187
9.5能力拓展188
习题192
第10章排序194
10.1排序的基本概念194
10.2插入排序195
10.2.1直接插入排序195
10.2.2折半插入排序198
10.2.3希尔排序199
10.3交换排序202
10.3.1冒泡排序202
10.3.2快速排序205
10.4选择排序206
10.4.1简单选择排序206
10.4.2堆排序208
10.5归并排序211
10.6基数排序212
习题214
第11章索引结构217
11.1概述217
11.2静态索引结构218
11.2.1索引表218
11.2.2索引表查找219
11.3动态索引结构219
11.3.1B树的定义及运算219
11.3.2B 树的定义及运算223
11.4Trie树229
11.4.1Trie树的定义229
11.4.2Trie树的表示229
11.4.3Trie树的查找229
11.5哈希索引230
11.5.1静态哈希索引230
11.5.2动态哈希索引230
习题231
|
內容試閱:
|
2019年 发布了《 关于深化本科教育教学改革全面提高人才培养质量的意见》,提出了大学教育要围绕学生忙起来、激励学生刻苦学习、全面提高课程建设质量等重要指示,实施国家级和省级一流课程建设“双万计划”,着力打造一大批具有高阶性、创新性和挑战度(两性一度)的“金课”,推动课堂教学革命。为响应号召,落实人才培养质量意见,特编写本教材来引导计算机类专业学生进行创新性、高阶性学习,通过完成具有挑战度的任务提高学生数据结构设计能力、问题求解能力。
随着计算机科学与技术的进步,数据结构也得到了进一步的发展。数据结构主要研究计算机存储、组织数据的方式,是计算机科学重要的基础课程之一。为有效地存储数据、设计高效的算法进行数据处理和检索,数据结构专门研究数据的逻辑结构和物理结构,并定义合适的运算、设计高效的算法,以满足实际应用需求。
数据结构与问题求解能力是评判计算机类专业学生是否具有良好专业素养的标准。本教材的目的主要是: ①传授经典算法知识,引导学生进入数据结构领域,掌握基本的数据结构设计方法和主要算法; ②通过能力拓展和创新性的问题求解,培养计算机类专业学生的问题分析与建模能力,并通过程序语言加以实现和调试的能力,引导学生开展高阶性和高挑战度问题求解实践。教师可以利用本教材方便地进行教学改革,开发出以能力培养为导向的教学模式,跳出传统“知识传递”型课堂的教学思维,切实落实“以学生为中心”的教学理念。
本书针对计算机科学与技术、软件工程、网络工程、数据科学与大数据技术、数学等相关专业的发展需求,全面介绍了数据结构的基本知识,详细介绍了数据逻辑结构、存储结构及常用算法,包括线性表、串、数组和广义表、树与二叉树、图、查找、排序、索引结构等经典内容,利用C 面向对象编程实现了常用的数据结构,引导学生建立初步的抽象编程思维,并构建数据结构的完整知识体系。同时,在部分章节中还引入了能力拓展环节,引导学生利用学习的数据结构知识来求解非传统问题,提高课程的挑战度。课后提供了创新性的习题,进一步巩固学生的计算思维能力、问题求解能力。
本书的重点、难点部分提供了微课视频,供学生自学或者课后释疑,提供了习题的解答思路及参考代码、在线测评数据,从多个角度引导学生开展自主学习,达到培养和提升学生问题求解能力的目的。
本书由邓泽林、李峰主编,陈曦、罗奕副主编。李峰负责统筹编写工作,邓泽林负责整体规划,并撰写了第1章、第2章、第5章、第7章、第8章、第9章、第11章;陈曦负责编写第6章、第10章;罗奕负责编写第3章、第4章。本书的编写得到了黄舒怡、徐彬峰、粟宇、赵韩熙、马艺、詹一夫、沈彬宇、孙宁欣、谭焱文等ACM竞赛选手的支持,他们在习题整理上提供了大量的帮助,在此表示感谢。
编者2023年12月
|
|