数据结构(C语言)(第三版)

数据结构(C语言)(第三版) 教材名称: 数据结构(C语言)(第三版)
ISBN号: 978-7-89436-329-9 作者: 宋桂娟
字数: 784千字 规格: 16开
印制时间: 2015-01-01 出版日期: 2015-01-01
定价: 68 元 样章下载: 样章《数据结构C语言第三版》正文印刷.pdf
购买地址:

本教材主要讲解数据结构的两大逻辑结构——线性结构和非线性结构,以及每种逻辑结构中的存储结构和相关操作与算法,另外介绍排序和查找的各种方法。教材共9章:第1章绪论;第2章线性表;第3章栈和队列;第4章树和二叉树;第5章图;第6章排序;第7章查找;第8章数组和广义表;第9章串。

 

第1章绪论1
1.1为什么要学习数据结构2
1.2什么是数据结构2
1.2.1数据的逻辑结构3
1.2.2数据的存储结构5
1.3算法6
1.4C语言基础8
1.4.1基本数据类型8
1.4.2构造数据类型9
1.4.3指针类型11
1.4.4函数14
1.4.5程序结构化和设计风格17
本章小结18
1.5C语言项目实践18
1.5.1求PI值18
1.5.2求斐波那契数列第n项的值19
1.5.3求两个非负整数的最大公约数21
1.5.4筛选法求素数22
1.5.5字符串加密与解密24
1.5.6模拟投掷两个骰子26
1.5.7正态分布的随机小数27
1.6习题29
1.6.1知识点:数据结构的定义29
1.6.2知识点:算法的概念30
第2章线性表33
2.1项目导学34
2.2线性表的逻辑结构34
2.3线性表的顺序存储结构35
2.3.1顺序表的基本概念35
2.3.2顺序表类型定义35
2.3.3顺序表的基本运算37
2.3.4顺序表存储的优缺点43
2.4线性表的链式存储结构43
2.4.1单链表43
2.4.2循环链表69
2.4.3双向链表69
2.5应用实例71
本章小结74
2.6线性表项目实践75
2.6.1动态存储的顺序表75
2.6.2双向链表79
2.6.3有序双向链表84
2.6.4一元多次多项式运算89
2.7习题94
2.7.1知识点:线性表的逻辑结构94
2.7.2知识点:线性表的顺序存储结构94
2.7.3知识点:线性表的链式存储结构95
第3章栈和队列101
3.1项目导学102
3.2栈102
3.2.1栈的逻辑结构及基本运算102
3.2.2栈的存储实现和运算实现103
3.3栈的应用举例113
3.3.1数制转换问题113
3.3.2表达式求值114
3.3.3栈与递归119
3.4队列121
3.4.1队列的定义及基本运算121
3.4.2队列的存储实现及运算实现122
3.5队列应用举例134
本章小结136
3.6栈和队列项目实践137
3.6.1基于动态顺序表的栈的实现138
3.6.2基于动态顺序表的循环队列的实现141
3.6.3进制转换144
3.6.4简单表达式求值147
3.6.5n皇后问题150
3.7习题152
3.7.1知识点:栈的基本概念152
3.7.2知识点:栈的存储154
3.7.3知识点:队列的基本概念及其应用155
3.7.4知识点:队列的存储156
第4章树和二叉树160
4.1项目导学161
4.2树161
4.2.1树的定义161
4.2.2树的基本术语162
4.3二叉树163
4.3.1二叉树的定义163
4.3.2二叉树的性质165
4.3.3二叉树的基本操作167
4.3.4二叉树的应用167
4.4二叉树和树的存储结构168
4.4.1二叉树的存储结构168
4.4.2树的存储结构171
4.5树、森林向二叉树的转换174
4.5.1树向二叉树的转换174
4.5.2森林向二叉树的转换175
4.6树与二叉树的遍历175
4.6.1二叉树的遍历176
4.6.2应用实例181
4.6.3树的遍历186
4.6.4线索二叉树186
4.7哈夫曼树189
4.7.1哈夫曼树的基本概念189
4.7.2构造哈夫曼树191
4.7.3哈夫曼编码192
本章小结194
4.8二叉树项目实践194
4.8.1二叉树的链式存储及常见操作194
4.8.2二叉树的顺序存储及常见操作202
4.8.3哈夫曼编码209
4.9习题213
4.9.1知识点:树和二叉树的基本概念213
4.9.2知识点:二叉树和树的存储结构215
4.9.3知识点:树、森林向二叉树的转换216
4.9.4知识点:树与二叉树的遍历217
4.9.5知识点:哈夫曼树219
第5章图221
5.1项目导学222
5.2图的基本概念222
5.2.1图的定义和术语222
5.2.2图的基本操作225
5.3图的存储225
5.3.1图的数组存储225
5.3.2图的邻接表存储229
5.3.3有向图的十字链表存储233
5.3.4无向图的邻接多重链表存储236
5.4图的遍历240
5.4.1深度优先搜索遍历240
5.4.2广度优先搜索遍历244
5.4.3图的连通性248
5.4.4生成树和生成森林257
5.5最小生成树263
5.5.1基本概念263
5.5.2克鲁斯卡尔算法264
5.5.3普里姆算法270
5.6图的应用277
5.6.1最短路径277
5.6.2AOV网与拓扑排序284
5.6.3AOE图与关键路径291
本章小结301
5.7图的项目实践301
5.7.1图的邻接矩阵存储与遍历302
5.7.2最短路径306
5.7.3图的邻接链表存储与遍历311
5.7.4拓扑排序315
5.8习题318
5.8.1知识点:图的基本概念318
5.8.2知识点:图的存储319
5.8.3知识点:图的遍历321
5.8.4知识点:最小生成树323
5.8.5知识点:图的应用324
第6章排序327
6.1项目导学328
6.2基本概念328
6.3插入排序329
6.3.1直接插入排序329
6.3.2希尔排序331
6.4交换排序334
6.4.1冒泡排序334
6.4.2快速排序337
6.5选择排序340
6.5.1直接选择排序340
6.5.2堆排序342
6.6归并排序347
6.7基数排序350
6.8各种内部排序方法的比较和选择354
本章小结355
6.9排序项目实践356
6.10习题356
6.10.1知识点:直接插入排序356
6.10.2知识点:希尔排序356
6.10.3知识点:冒泡排序357
6.10.4知识点:快速排序357
6.10.5知识点:直接选择排序358
6.10.6知识点:堆排序359
6.10.7知识点:归并排序360
6.10.8知识点:基数排序360
6.10.9综合习题361
第7章查找364
7.1项目导学365
7.2相关概念365
7.3查找算法的度量366
7.4静态查找表367
7.4.1顺序查找367
7.4.2折半查找369
7.4.3分块查找374
7.5动态查找表376
7.5.1二叉排序树376
7.5.2平衡二叉树389
7.5.3B-树和B+树400
7.6哈希表查找406
7.6.1哈希表与哈希查找407
7.6.2哈希函数的构造方法408
7.6.3处理冲突的方法410
7.6.4哈希表的查找分析412
本章小结416
7.7查找项目实践417
7.8习题417
7.8.1知识点:顺序查找417
7.8.2知识点:折半查找418
7.8.3知识点:二叉排序树419
7.8.4知识点:平衡二叉树421
7.8.5知识点:B-树和B+树422
7.8.6知识点:哈希查找423
7.8.7综合习题424
第8章数组和广义表426
8.1项目导学427
8.2数组的顺序存储结构427
8.3特殊数组的压缩存储428
8.3.1稀疏数组429
8.3.2特殊矩阵431
8.4广义表的定义和操作434
8.5广义表的存储结构435
8.6广义表的应用实例437
本章小结437
8.7数组和广义表项目实践438
8.7.1稀疏矩阵的压缩存储438
8.7.2矩阵转置与矩阵相乘442
8.7.3广义表结构的实现445
8.7.4广义表结构的应用449
8.8习题456
8.8.1知识点:数组的定义和顺序存储456
8.8.2知识点:特殊数组的压缩存储457
8.8.3知识点:广义表的基本概念458
第9章串461
9.1项目导学462
9.2串的定义462
9.3串的存储结构462
9.3.1串的顺序存储463
9.3.2串的链式存储464
9.4串的基本操作464
9.4.1求串长度465
9.4.2串拷贝465
9.4.3串连接466
9.4.4串比较467
9.4.5求子串469
9.4.6串的模式匹配470
本章小结475
9.5字符串项目实践475
9.5.1模仿C语言库函数strncpy475
9.5.2模仿C语言库函数strncat477
9.5.3模仿C语言库函数strncmp478
9.5.4求字符串的子串480
9.5.5串的模式匹配482
9.5.6基于动态内存的字符串结构485
9.6习题491
9.6.1知识点:串的基本概念491
9.6.2知识点:串的操作和顺序存储492
9.6.3知识点:串的模式匹配493
附录教学建议494
参考文献500
 

● 每个算法实现都是完整的、全部可以运行通过的C语言程序,便于学生实践

● 每章前均有课前导学一节,便于学生初步了解每章内容,清楚该如何学习

● 每章后均有总结,从整体回顾课程的知识点,提出重点难点,便于学生学习

● 穿插了一些板块内容,如:帮助理解、脚下留心、深度探险等,便于学生理解

● 每章均配有具体的应用实例,便于学生提高学习的兴趣,明白具体的应用

● 按照提出问题——分析问题——解决问题的思路编写,思路清晰、层次分明

● 每一小节对应一个单元项目或单元组项目,在每个项目中,或编写函数来实现一个算法,或编写类型(以及与类型相关的函数)来实现一种数据结构

● 每章习题都根据知识点进行编排:对各章知识点进一步细化,并将相关知识点进行归类,使学生在学习的过程中更具有针对性