登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書

『簡體書』数据结构(C语言版)(第3版)

書城自編碼: 3889816
分類:簡體書→大陸圖書→教材研究生/本科/专科教材
作者: 殷人昆
國際書號(ISBN): 9787302630227
出版社: 清华大学出版社
出版日期: 2023-07-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:HK$ 108.6

我要買

 

** 我創建的書架 **
未登入.


新書推薦:
欧洲文明的进程(《欧洲文明十五讲》的延伸与细化,欧洲学创始人陈乐民巨作,深度解析欧洲的发展真相)
《 欧洲文明的进程(《欧洲文明十五讲》的延伸与细化,欧洲学创始人陈乐民巨作,深度解析欧洲的发展真相) 》

售價:HK$ 158.7
法理学十六讲:主题与理论
《 法理学十六讲:主题与理论 》

售價:HK$ 82.8
少年解码侦探团(全6册)旗语密码、字母数字密码、加密暗号密码、多重密码、语言密码!每册解锁一种!沉浸式解码,提升专注力、逻辑思维能力!
《 少年解码侦探团(全6册)旗语密码、字母数字密码、加密暗号密码、多重密码、语言密码!每册解锁一种!沉浸式解码,提升专注力、逻辑思维能力! 》

售價:HK$ 205.6
宝鸡出土商周青铜器铭文研究
《 宝鸡出土商周青铜器铭文研究 》

售價:HK$ 308.2
地方戏曲文献汇编.河北卷.中(全三册)
《 地方戏曲文献汇编.河北卷.中(全三册) 》

售價:HK$ 1147.7
心可以知道:先秦儒家“情”论
《 心可以知道:先秦儒家“情”论 》

售價:HK$ 89.7
黄埔军校史 1924-1927
《 黄埔军校史 1924-1927 》

售價:HK$ 158.7
复杂心智:在变动时代重启人类天赋能力
《 复杂心智:在变动时代重启人类天赋能力 》

售價:HK$ 59.8

 

建議一齊購買:

+

HK$ 62.1
《会计学(非专业用)(第6版)(中国人民大学会计系列教材;国家》
+

HK$ 93.8
《医学物理学(第二版)》
+

HK$ 60.0
《财务管理学(第9版·立体化数字教材版)》
+

HK$ 116.4
《妇产科学(第9版/本科临床/配增值)》
+

HK$ 72.0
《Cinema 4D实例设计与制作》
+

HK$ 53.2
《数值分析》
編輯推薦:
全书包含了2000多道习题,将几乎所有课本上提到的因篇幅限制没有深入挖掘的内容(主要是算法实现)都写出了C代码,做了调试。既可作为高等学校计算机相关专业本科生学习数据结构与算法课程的教材,也可以作为计算机相关专业考研的辅导教材,以及计算机或软件考试的复习教材
目錄
第1章绪论1
1.1数据结构的概念及分类1
1.1.1为什么要学习数据结构1
1.1.2与数据结构相关的基本术语2
1.1.3数据结构的分类5
1.1.4数据结构的存储结构7
1.1.5定义在数据结构上的操作8
1.1.6“好”数据结构8
1.2使用C语言描述数据结构8
1.2.1C的数据类型9
1.2.2算法的控制结构10
1.2.3算法的函数结构11
1.2.4动态存储分配14
1.2.5逻辑和关系运算的约定15
1.2.6输入与输出15
1.3算法和算法设计16
1.3.1算法的定义和特性16
1.3.2算法的设计步骤17
1.3.3算法设计的基本方法18
1.4算法分析与度量21
1.4.1算法的评价标准22
1.4.2算法的时间和空间复杂性度量22
1.4.3算法的渐进分析25
本章小结28
习题28
第2章线性表32
2.1线性表32
2.1.1线性表的定义和特点32
2.1.2线性表的主要操作33
2.2顺序表34
2.2.1顺序表的定义和特点34
2.2.2顺序表的结构定义35
2.2.3顺序表主要操作的实现36
2.2.4顺序表主要操作的性能分析39
2.2.5顺序表的应用举例41
2.3单链表42
2.3.1单链表的定义和特点42
2.3.2单链表的结构定义43
2.3.3单链表中指针的操作43
2.3.4单链表中的插入与删除43
2.3.5带头结点的单链表47
2.3.6单链表主要操作的性能分析48
2.3.7单链表的顺序访问与尾递归49
2.3.8单链表的应用——用有序链表表示集合52
2.4顺序表与线性链表的比较55
2.5线性链表的其他变形57
2.5.1循环链表57
2.5.2双向链表61
2.5.3静态链表65
2.6线性表的应用: 一元多项式及其运算65
2.6.1一元多项式的表示66
2.6.2多项式的结构定义与建立67
2.6.3多项式的加法69
2.6.4多项式的乘法70
本章小结71
习题72
〖2〗〖2〗第3章栈和队列78
3.1栈78
3.1.1栈的概念78
3.1.2顺序栈79
3.1.3链式栈85
3.1.4栈的混洗87
3.2队列90
3.2.1队列的概念90
3.2.2循环队列91
3.2.3双循环队列95
3.2.4链式队列96
3.3栈的应用99
3.3.1数制转换99
3.3.2括号匹配100
3.3.3表达式的计算与优先级处理101
3.3.4栈与递归的实现105
3.4队列的应用108
3.4.1打印杨辉三角形与逐行处理108
3.4.2电路布线与两点间的最短路径110
3.5在算法设计中使用递归113
3.5.1汉诺塔问题与分治法113
3.5.2排列组合与减治法116
3.5.3迷宫问题与回溯法118
3.5.4计算组合数与动态规划123
3.6双端队列125
3.6.1双端队列的概念125
3.6.2输入受限的双端队列125
3.6.3输出受限的双端队列126
3.6.4双端队列的顺序存储表示127
3.6.5双端队列的链接存储表示128
本章小结130
习题130
第4章数组、串和广义表136
4.1数组136
4.1.1一维数组136
4.1.2多维数组138
4.1.3数组的应用举例140
4.2特殊矩阵的压缩存储141
4.2.1对称矩阵的压缩存储142
4.2.2三对角矩阵的压缩存储144
4.3稀疏矩阵145
4.3.1稀疏矩阵的概念145
4.3.2稀疏矩阵的三元组表表示146
4.3.3稀疏矩阵的十字链表表示151
4.4字符串152
4.4.1字符串的概念153
4.4.2字符串的初始化和赋值153
4.4.3C语言中有关字符串的库函数154
4.4.4自定义字符串的存储表示156
4.4.5串的模式匹配161
4.4.6字符串的应用实例166
4.5广义表170
4.5.1广义表的概念170
4.5.2广义表的性质171
4.5.3广义表的链接表示171
4.5.4三元多项式的表示174
本章小结176
习题177
第5章树与二叉树182
5.1树的基本概念182
5.1.1树的定义和术语182
5.1.2树的基本操作185
5.2二叉树186
5.2.1二叉树的概念186
5.2.2二叉树的性质187
5.2.3二叉树的主要操作189
5.3二叉树的存储表示190
5.3.1二叉树的顺序存储表示190
5.3.2二叉树的链表存储表示195
5.4二叉树的遍历199
5.4.1二叉树遍历的递归算法199
5.4.2递归遍历算法的应用举例200
5.4.3二叉树遍历的非递归算法203
5.4.4层次序遍历算法的应用举例208
5.4.5二叉树的计数212
5.5线索二叉树215
5.5.1线索二叉树的概念215
5.5.2线索二叉树的种类216
5.5.3中序线索二叉树的建立和遍历217
5.5.4前序与后序线索二叉树222
5.6树与森林223
5.6.1树的双亲表示223
5.6.2树的子女链表表示227
5.6.3子女兄弟链表表示230
5.6.4森林与二叉树的转换232
5.6.5树与森林的深度优先遍历234
5.6.6树与森林的广度优先遍历236
5.6.7树遍历算法的应用举例238
本章小结239
习题240
第6章树与二叉树的应用245
6.1二叉查找树245
6.1.1二叉查找树的概念245
6.1.2二叉查找树的查找246
6.1.3二叉查找树的插入247
6.1.4二叉查找树的删除249
6.1.5二叉查找树的性能分析250
6.2中序线索二叉查找树253
6.2.1中序线索二叉查找树的构建253
6.2.2中序线索二叉查找树的插入254
6.2.3中序线索二叉查找树的删除256
6.2.4中序线索二叉查找树的范围查找257
6.3AVL树257
6.3.1AVL树的概念258
6.3.2平衡化旋转258
6.3.3AVL树的插入262
6.3.4AVL树的删除264
6.3.5AVL树的性能分析268
6.4Huffman树270
6.4.1带权路径长度的概念270
6.4.2Huffman树的概念270
6.4.3最优判定树274
6.4.4Huffman编码275
6.5堆280
6.5.1小根堆和大根堆280
6.5.2堆的建立281
6.5.3堆的插入283
6.5.4堆的删除284
6.6并查集285
6.6.1并查集的定义及其实现285
6.6.2并查集操作的分析和改进287
6.7八皇后问题与树的剪枝289
6.7.1八皇后问题的提出289
6.7.2八皇后问题的状态树290
6.7.3八皇后问题算法292
本章小结293
习题293
第7章图298
7.1图的基本概念298
7.1.1与图有关的若干概念298
7.1.2图的基本操作301
7.2图的存储结构303
7.2.1图的邻接矩阵表示303
7.2.2图的邻接表表示308
7.2.3邻接矩阵表示与邻接表表示的比较315
7.2.4图的邻接多重表表示315
7.3图的遍历317
7.3.1图遍历的概念317
7.3.2深度优先搜索318
7.3.3广度优先搜索319
7.3.4图中的路径与回路320
7.4图的连通性323
7.4.1无向图的连通分量323
7.4.2重连通图325
7.4.3有向图的强连通分量327
7.5最小生成树330
7.5.1最小生成树求解和贪婪法330
7.5.2Kruskal算法332
7.5.3Prim算法335
7.6最短路径337
7.6.1非负权值的单源最短路径337
7.6.2任意权值的单源最短路径341
7.6.3所有顶点之间的最短路径344
7.6.4无权值图的最短路径347
7.7活动网络348
7.7.1AOV网络与拓扑排序348
7.7.2AOE网络与关键路径法352
本章小结356
习题357
第8章查找363
8.1查找的基本概念363
8.1.1查找的概念363
8.1.2查找算法的性能分析364
8.2顺序查找法364
8.2.1在顺序表上的顺序查找算法364
8.2.2在线性链表上的顺序查找算法368
8.3折半查找法368
8.3.1折半查找法368
8.3.2重复元素序列上的折半查找371
8.3.3斐波那契查找: 折半查找的变形372
8.3.4插值查找: 折半查找的变形375
8.4最优二叉查找树376
8.4.1自下向上构造最优二叉查找树376
8.4.2自上向下构造近似最优二叉查找树380
8.5B树384
8.5.1索引顺序表与分块查找384
8.5.2多级索引结构与m叉查找树387
8.5.3B树的概念388
8.5.4B树上的查找390
8.5.5B树上的插入391
8.5.6B树上的删除393
8.5.7B 树397
8.6键树400
8.6.1键树的概念400
8.6.2双链树400
8.6.3Trie树405
8.7散列表及其查找406
8.7.1散列的概念406
8.7.2常见的散列函数407
8.7.3解决冲突的开地址法410
8.7.4解决冲突的链地址法418
8.7.5散列法分析422
本章小结424
习题424
第9章内排序432
9.1排序概述432
9.1.1排序的概念432
9.1.2排序算法的性能433
9.1.3数据表的结构定义434
9.2插入排序435
9.2.1直接插入排序436
9.2.2基于链表的直接插入排序437
9.2.3折半插入排序439
9.2.4希尔排序440
9.3交换排序442
9.3.1起泡排序442
9.3.2快速排序445
9.3.3快速排序的改进算法449
9.4选择排序452
9.4.1简单选择排序452
9.4.2堆排序454
9.4.3锦标赛排序457
9.5归并排序460
9.5.1二路归并排序的设计思路460
9.5.2二路归并排序的递归算法461
9.5.3基于链表的归并排序算法463
9.5.4迭代的归并排序算法464
9.5.5利用循环右移的二路归并算法466
9.6基数排序468
9.6.1基数排序概述469
9.6.2MSD基数排序469
9.6.3LSD基数排序472
9.7内排序算法的分析和比较475
9.7.1排序方法的下界475
9.7.2各种内排序方法的比较476
9.8时间复杂度小于O(nlog2n)的排序算法478
9.8.1计数排序算法478
9.8.2鸽巢排序算法479
9.9选择算法480
9.9.1在顺序表中查找值第k小的元素480
9.9.2在带头结点的单链表中查找倒数第k个结点481
9.9.3在带头结点的单链表中查找值为倒数第k的元素482
9.9.4不要求完全排序求前k个值最小的元素483
本章小结484
习题485
第10章外排序491
10.1主存储器和外存储器491
10.1.1磁带491
10.1.2磁盘存储器492
10.1.3缓冲区493
10.2基于磁盘的外排序过程494
10.2.1基于磁盘排序的过程494
10.2.2基于磁盘排序的性能分析495
10.3m路平衡归并496
10.3.1m路平衡归并的过程496
10.3.2用败者树选最小记录497
10.3.3败者树的构造498
10.3.4排序算法中的读写磁盘操作500
10.3.5使用败者树进行m路平衡归并排序的算法502
10.4初始归并段的生成504
10.4.1置换选择排序504
10.4.2用败者树实现置换选择排序505
10.4.3置换选择排序算法的实现505
10.4.4置换选择排序的性能分析508
10.5最佳归并树509
10.5.1归并树的构造509
10.5.2构造最佳归并树的算法510
10.5.3根据最佳归并树实现M路归并排序512
10.6并行操作的缓冲区处理514
10.6.1使用固定缓冲区实现并行操作514
10.6.2使用缓冲区队列实现并行操作515
10.7磁带归并排序517
10.7.1平衡归并排序517
10.7.2多步归并排序518
10.7.3多步归并排序初始归并段的分配518
本章小结519
习题520
附录清华大学本科生考试试题525
参考文献528
內容試閱
数据结构课程是计算机科学、计算机工程、软件工程和电子信息工程等专业的专业基础课,是在各类应用系统开发中提高系统可靠性、提高系统运行安全性和效率的关键技术之一。学好数据结构和算法,有利于后续的专业课程学习,包括操作系统、数据库系统、计算机体系结构、人工智能、信息安全和密码学、系统分析与设计等,这些课程都需要应用数据结构的知识,所以在国家研究生考试、软件水平考试、各高科技公司的面试中都少不了数据结构方面知识的考查。作者于1985年公派到日本东京的某大学当客座研究员,研究室的教授是刚从日立公司退下来的软件质量保证部的部长菅野先生,当时还兼任日本软件质量管理协会的干事长。第一次见面他就来了个突袭,出了两道题让我当场解答,一道是程序设计的题,一道是数据结构的题,记得是计算关键路径,我是在清华大学计算机系教数据结构课程的,当然这难不倒我,但这也说明了学习数据结构课程的重要性。
从2016年以来,作者受清华大学出版社委托,开始《数据结构算法解析》一书的写作。从收集题目到逐一做出解答,上机测试,花费了三年时间。该书包含了2000多道习题,几乎将所有课本上提到的因篇幅限制没有深入挖掘的内容(主要是算法实现)都给出了C语言代码,并做了调试。2020年开始了《数据结构(C 版)》的第3版升级工作,按照面向对象系统的要求,整理了书中所有算法,还扩充了部分章节的内容。
从2021年开始准备本书第3版的升级工作,第3版与第2版比较,各章节变化不大,但修改和增加了一些内容。举例说明如下:
第3章栈和队列中增加了双端队列的内容,还增加了与递归相关的算法设计技术,包括分治、减治、回溯、贪心法的例题讲解。
第5章树与二叉树增加了二叉树顺序表示相关操作的实现,以及树的双亲表示、子表表示操作的实现。
第6章树与二叉树的应用中修改了AVL树的插入与删除算法的实现,增加了中序线索二叉查找树的查找、插入与删除算法的实现,以及Huffman编码的译码和解码算法的实现。
第7章图中增加了求有向图的强连通分量算法的实现,求任意权值的单源最短路径Bellmanford算法的实现,以及修改了求关键路径算法的实现。
第8章查找中增加了最优二叉查找树的构建算法的实现,增加了数字查找树的插入与删除算法的实现,修改了B树的插入与删除算法的实现。
第9章内排序中增加了两路插入排序算法的实现,增加了三路快速排序算法的实现,修改了胜者树和锦标赛排序算法的实现,修改了LSD基数排序算法的实现,增加了3个时间复杂度小于O(nlog2n)的排序算法的实现,增加了用于选择的3个算法的实现。
第10章外排序中为方便学生上机模拟外排序,脱离了C的文件读写操作,全部采用数组模拟文件,自行设计了读写物理块和记录的函数,实现了多路平衡归并排序、置换选择排序、最佳归并树和使用最佳归并树实现多路归并排序等算法。
第3版与第2版相比,还做了如下改进:
(1) 对全书的算法全部重新测试和调试。实际上,对计算机程序做测试和调试是两个概念,测试是“查错”,调试是“改错”。以前的课本,涉及的例题和算法的实现都可能有逻辑错误,只拿少量数据做了确认,也就是说,用一些合理的运行数据,证明算法实现了或达到了预期的效果。但是很少检查它们在不合理的输入下是否能检错、通过出现的错误行为发现代码中可能存在的Bug。这次,作者对书中的所有算法都重新做了黑盒测试,在输入方面,选择了边界、典型和超出边界的数据作为测试用例,运行程序,看结果是否正确。不但要确认算法做了它应该做的事,还要检查它是否做了不该做的事,如果结果有误,查错并改正之。
(2) 针对全书的算法,都赋予了编号,如“程序230”。书中对每一个程序,都注明了它存放于哪个程序文件中,如“prg230.cpp”或“DataList.h”,在其他使用这个程序的主调程序中,使用了#include “prg230.cpp”指明被调用程序所在的文件。这样便于读者在组织自己的程序系统时找到书中算法的调用关系。
〖2〗〖2〗(3) 对各章的习题做了修改。除保留了简答题和算法题外,增加了单项选择题、判断题等题型的习题。新增习题多数取材于清华大学计算机系列教材,包括作者以前编写的辅助教材《数据结构(C语言描述)》《数据结构习题解析》《数据结构精讲与习题解答》《数据结构使用面向对象方法(C 语言)》《数据结构算法解析》等。这些习题覆盖了数据结构各章的知识点,从不同侧面训练如何运用数据结构的基本知识解决应用问题的能力。经过筛选,习题的难度都不大。如果读者有余力,可以参考《数据结构算法解析》一书,该书中有正式教材收录的习题及其解答,还有正式教材没有收录的习题及其解答。
本书有些例题综合运用了前面的知识,由于C没有提供C 常用的模板机制,求解例题相对复杂一点。例如,使用最佳归并树实现m路平衡归并排序时,由于加入了空归并段,导致某趟归并的归并路数少于m,程序要很好地通过最佳归并树控制各次归并的归并路数,并在用大根堆实现m路归并时每次选最小,用置换选择完成归并排序,等于把第10章前面的几个知识点都用上了,还遇上了数组超界、冲掉其他变量的计算结果等编程问题,需要读者下功夫钻研,这对掌握知识、提高技能很有帮助。本书第2版出版后,作者开始另一本辅助教材《数据结构精讲与习题详解》(第2版)的写作,接着又结合考研和求职的需要,开始了《数据结构算法解析》的写作,在此期间,对本书第2版的内容、知识体系编排和算法的有效性有了一些体会,又回过头来修改本书,所以本书实际上是第2版的修订本。
自从1978年美籍华人冀中田第一次在中国讲授数据结构课开始,很多老师对课程的内容和讲授方法做了大量的研究,也可以说是在做中学,总结出许多好的经验,使得课程的教学与当时相比进步了很多。作者在这门课程的教学中也积累了一些心得,希望与正在学习这门课程的同学们分享,这是作者修改这本教材的初衷。
由于数据结构课程学时的限制(多数学校为48~64学时),作为本科生的教材,包含的知识容量应有一定限度,可以选择部分章节进行教与学。若知识点太少,学生在未来的工作实践中可联想的思考空间狭窄,解决问题的能力受限;若知识点太多,必然沦为百科全书式的阅读,基础不牢靠,同样使得解决问题的能力受限。教材可以适当地覆盖,但教学可以根据教师的理解进行节选。通过教学实践证明,本书的第2版在内容上取材是恰当的,范围上取材的深度和广度也是恰当的,但联想不够,某些算法的实现上偏向使用伪代码描述,造成部分读者在学习上和实践上的困惑。本书第3版做了适当修改,各章增加了“想想看”,目的是增加一些互动环节。这些思考题触及的都是可联想的内容,或者是对理解正文有用的知识“点拨”。所谓“学问”就是有“学”还要有“问”。正面的“问”有助于理解“应该做什么”;反面的“问”有助于理解“不该做什么”。
因为作者的水平有限,可能在某些方面有考虑不周的地方,虽然作者对全部书稿通读并修改了两次,但书中难免还存在疏漏或错误,诚恳希望读者提出宝贵意见。
作者
2023年1月于清华大学

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 大陸用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2024 (香港)大書城有限公司  All Rights Reserved.