具体描述
《数据结构(C语言版)》在选材与编排上,贴近当前普通高等院校“数据结构”课程的现状和发展趋势,符合最新研究生考试大纲,内容难度适度,突出实用性和应用性。全书共8章,内容包括绪论,线性表,栈和队列,串、数组和广义表,树和二叉树,图,查找和排序。全书采用类C语言作为数据结构和算法的描述语言。
《数据结构(C语言版)》可作为普通高等院校计算机和信息技术相关专业“数据结构”课程的教材使用,也可供从事计算机工程与应用工作的科技工作者参考。
作者简介
严蔚敏,清华大学计算机系教授,长期从事数据结构教学和教材建设,和吴伟民合作编著的《数据结构》曾获“第二届普通高等学校优秀教材全国特等奖”和“1996年度国家科学技术进步奖三等奖”。
目录信息
1.1 数据结构的研究内容 1
1.2 基本概念和术语 3
1.2.1 数据、数据元素、数据项和数据对象 3
1.2.2 数据结构 4
1.2.3 数据类型和抽象数据类型 6
1.3 抽象数据类型的表示与实现 7
1.4 算法和算法分析 11
1.4.1 算法的定义及特性 11
1.4.2 评价算法优劣的基本标准 11
1.4.3 算法的时间复杂度 12
1.4.4 算法的空间复杂度 14
1.5 小结 15
习题 16
第2章 线性表 18
2.1 线性表的类型定义 18
2.1.1 线性表的定义和特点 18
2.1.2 线性表的抽象数据类型定义 18
2.2 线性表的顺序表示和实现 19
2.2.1 线性表的顺序存储表示 19
2.2.2 顺序表中基本操作的实现 20
2.3 线性表的链式表示和实现 24
2.3.1 单链表的定义和表示 24
2.3.2 单链表基本操作的实现 26
2.3.3 循环链表 31
2.3.4 双向链表 32
2.4 线性表的应用 34
2.4.1 一般线性表的合并 34
2.4.2 有序表的合并 35
2.4.3 一元多项式的表示及相加 37
2.5 小结 40
习题 41
第3章 栈和队列 44
3.1 栈 44
3.1.1 栈的类型定义 44
3.1.2 顺序栈的表示和实现 45
3.1.3 链栈的表示和实现 47
3.2 栈的应用 48
3.2.1 数制转换 49
3.2.2 括号匹配的检验 49
3.2.3 表达式求值 51
3.3 栈与递归 54
3.3.1 采用递归算法解决的问题 54
3.3.2 递归过程与递归工作栈 57
3.3.3 递归算法的效率分析 59
3.3.4 将递归转换为非递归的方法 60
3.4 队列 61
3.4.1 队列的类型定义 61
3.4.2 循环队列——队列的顺序表示和实现 62
3.4.3 链队——队列的链式表示和实现 65
3.5 队列的应用 67
3.6 小结 69
习题 69
第4章 串、数组和广义表 73
4.1 串 73
4.1.1 串的类型定义 73
4.1.2 串的存储结构 75
4.1.3 串的模式匹配算法 76
4.2 数组 83
4.2.1 数组的类型定义 83
4.2.2 数组的顺序存储 84
4.2.3 特殊矩阵的压缩存储 85
4.3 广义表 87
4.3.1 广义表的定义 87
4.3.2 广义表的存储结构 88
4.4 小结 90
习题 91
第5章 树和二叉树 94
5.1 树的定义和基本术语 94
5.1.1 树的定义 94
5.1.2 树的基本术语 96
5.2 二叉树 97
5.2.1 二叉树的定义 97
5.2.2 二叉树的性质 100
5.2.3 二叉树的存储结构 102
5.3 遍历二叉树和线索二叉树 103
5.3.1 遍历二叉树 103
5.3.2 线索二叉树 109
5.4 树和森林 114
5.4.1 树的存储结构 114
5.4.2 森林与二叉树的转换 116
5.4.3 树和森林的遍历 116
5.5 赫夫曼树及其应用 117
5.5.1 赫夫曼树的基本概念 117
5.5.2 赫夫曼树的构造算法 118
5.5.3 赫夫曼编码 121
5.6 小结 123
习题 123
第6章 图 126
6.1 图的定义和基本术语 126
6.1.1 图的定义 126
6.1.2 图的基本术语 128
6.2 图的存储结构 129
6.2.1 邻接矩阵 130
6.2.2 邻接表 132
6.3 图的遍历 135
6.3.1 深度优先搜索 135
6.3.2 广度优先搜索 138
6.4 图的应用 139
6.4.1 最小生成树 139
6.4.2 最短路径 144
6.4.3 拓扑排序 150
6.4.4 关键路径 153
6.5 小结 158
习题 160
第7章 查找 164
7.1 查找的基本概念 164
7.2 线性表的查找 165
7.2.1 顺序查找 165
7.2.2 折半查找 166
7.3 树表的查找 169
7.3.1 二叉排序树 170
7.3.2 平衡二叉树 176
7.3.3 B-树 182
7.3.4 B+树 190
7.4 散列表的查找 192
7.4.1 散列表的基本概念 192
7.4.2 散列函数的构造方法 193
7.4.3 处理冲突的方法 195
7.4.4 散列表的查找 198
7.5 小结 201
习题 203
第8章 排序 207
8.1 基本概念和排序方法概述 207
8.1.1 排序的基本概念 207
8.1.2 排序方法的分类 208
8.1.3 待排序记录的存储方式 208
8.1.4 排序算法效率的评价指标 209
8.2 插入排序 209
8.2.1 直接插入排序 209
8.2.2 折半插入排序 211
8.2.3 希尔排序 212
8.3 交换排序 214
8.3.1 冒泡排序 215
8.3.2 快速排序 216
8.4 选择排序 219
8.4.1 简单选择排序 219
8.4.2 堆排序 221
8.5 归并排序 226
8.6 基数排序 228
8.6.1 多关键字的排序 228
8.6.2 链式基数排序 228
8.7 小结 232
习题 233
· · · · · · (收起)
读后感
个人感觉写的比较烂 很经典的算法本来可以直接用C直接写出来的,但是用伪代码,搞的我们一头雾水...... 把我这个热爱编程的小青年搞郁闷了
本书最大的缺点就是 代码简洁! TMD的太简洁了,导致几段小代码要呼哧半天,根本就是装X的代码,优化个毛!让人看懂最重要。 第二个缺点,代码风格,太影响阅读了,跟一堆无序的数理推到公式, 能对齐点吗?分段吗? 第三个缺点,注释,太水了!后面的注释完全就是字面解读,字...
书从内容的深度和完备性上来说都算不上太过经典,却是一本不错的教材型图书.至少比起国内各种抄来抄去的教材都要强得多.老一辈的人可能大都秉承教书育人的理念,不像现在的好多教授导师弄虚作假,利欲熏心.
RT 老师说了,这本书很不适合自学。 哎,国内的书算不错的了。 某君 推荐读 算法导论
书评 这本书,不适合初学者,因为对初学者相当的不友好。 就说说伪代码,不谈它的思路布局。 第一, 对于C/C++的来说,数组默认都是从0开始,他偏偏搞个a[0]是数组长度,a[n]是末尾元素; 第二, 伪代码真的很精简,如果你能将伪代码一个一个转化为C语言代码,你还要教材干什么...
用户评价
这部作品的结构安排无疑是其最值得称道的部分之一。它打破了传统线性的时间叙事,采用了多重交叉叙事线索,时间在过去、现在和假设的未来之间不断跳跃、交织。起初,这种跳跃感让人有些许不适,仿佛在拼凑一个复杂的万花筒。但随着阅读的深入,读者会逐渐领悟到作者的匠心所在——这些看似分离的故事碎片,实则共同指向一个宏大的主题结构。作者通过在不同时间线中重复或呼应特定的主题词或场景,构建起一种强烈的宿命感和关联性。读到最后,所有的线索汇聚、闭环的那一刻,带来的震撼是层层递进、累积爆发的。这不仅是对叙事技巧的考验,更是对作者构建复杂世界体系能力的极大肯定。它要求读者具备极高的专注力,但给予的回报是远远超乎预期的整体美感和逻辑闭合的满足感。
这本书的语言风格,初读之下或许会让人略感陌生,但一旦适应了其独特的节奏和用词习惯,便会发现其中蕴含着一种古典的韵味和强大的表现力。它大量采用了少见的、富有历史沉淀感的词汇,构建了一种近乎史诗般的叙事基调。句子结构复杂而精致,如同精雕细琢的巴洛克式建筑,层层叠叠,却又保持着惊人的结构美感。这种语言的密度要求读者必须放慢速度,细细品味每一个措辞的选择,否则很容易在繁复的修饰中迷失主旨。然而,正是这种挑战性,使得每一次理解的突破都带来了巨大的满足感。作者对于意象的运用也堪称一绝,一个简单的符号,如“断裂的钟摆”或“永不熄灭的灯火”,被赋予了多重象征意义,贯穿始终,强化了作品的整体意境。这是一部需要用耳朵去“听”的文字,感受它内在的韵律和回响。
从纯粹的娱乐性和节奏感来看,这本书在情节设置上的精巧程度,足以媲美最顶级的悬疑小说。虽然它没有刻意追求每章都有高潮的刺激感,但其构建的内在逻辑链条却异常坚固且出人意料。作者擅长“慢炖”式的铺陈,先是营造出一种平静的表象,让读者放松警惕,然后突然之间,一个隐藏极深的阴谋或一个突发的变故便会彻底颠覆之前的认知。我个人对其中关于信息不对称的描写深感着迷,角色们在信息迷雾中摸索,而我们作为旁观者,虽然拥有上帝视角,却依然会被作者故意设置的误导性线索牵着鼻子走。几次关键转折点的设计,让我忍不住拍案叫绝,因为它们既合乎情理(事后看来),又在阅读过程中完全出乎意料。这是一场智力上的精彩博弈,让人欲罢不能地想知道下一张底牌是什么。
这部作品的叙事手法简直让人拍案叫绝!作者似乎对人性的幽微之处有着深刻的洞察力,笔下的人物性格立体得仿佛随时会从纸页中走出来。故事的开篇并不急于抛出核心冲突,而是像一位耐心的织布匠,用精细的线索缓缓勾勒出世界观的宏大与复杂。我特别欣赏那种在日常对话中不动声色地埋下伏笔的技巧,等到情节发展到某个关键节点时,那些看似不经意的只言片语便如同被点燃的火药桶,瞬间引爆了整个故事的张力。书中对于环境的描摹也极具画面感,无论是阴郁潮湿的古老街道,还是阳光洒满的宁静庭院,都让人仿佛身临其境。更值得称道的是,作者对于叙事节奏的掌控达到了炉火纯青的地步,该快则疾风骤雨,该慢则细水长流,使得阅读过程充满了跌宕起伏的惊喜,完全让人沉浸其中,忘记了时间的流逝。整本书读下来,我感觉自己不是在阅读一个故事,而是在体验一段波澜壮阔的人生旅程,回味无穷。
我得说,这本书在哲学思辨层面上达到了一个令人震撼的高度。它并非那种生硬的说教式哲学著作,而是将深奥的命题巧妙地融入到角色之间的冲突与抉择之中。每一次关键的选择背后,都蕴含着对“存在”、“自由意志”与“道德边界”的深刻拷问。作者没有给出简单的答案,而是将选择的重负抛给了读者,迫使我们去审视自己内心深处的信仰体系。这种开放性的讨论空间,极大地拓宽了阅读的维度。我尤其赞赏作者对于多重叙事视角的运用,通过不同角色的内心独白,呈现出同一事件截然不同的理解,这极大地丰富了对“真相”的探讨——也许真相本身就是流动的、主观的建构。读完之后,我的脑海中久久萦绕的不是情节的后续,而是那些关于生命意义的喃喃自语。对于那些渴望在文学作品中寻求更高层次精神滋养的读者来说,这本书绝对是一次不容错过的思想洗礼。
网上遇到一个念高一的学生。从他疯狂让我给他推荐各种书籍和询问各种书籍好不好中我感觉这名同学可能只是情绪爆发。而且他的说话语气很差。我耐心地给他说明计算机的方方面面虽然只买了我三本书。。我告诉他高一可以抽时间来看高二高三了还是要认真备考先考上好大学。他说。他不爱学习。就想当个黑客。😳。这本数据结构主要是因为都是伪代码不能直接跑可能导致口碑不是很好吧。我觉得还行。
这作者就是我们老师。这本书颠覆了我对编程的看法。我学IT我自豪。
网上遇到一个念高一的学生。从他疯狂让我给他推荐各种书籍和询问各种书籍好不好中我感觉这名同学可能只是情绪爆发。而且他的说话语气很差。我耐心地给他说明计算机的方方面面虽然只买了我三本书。。我告诉他高一可以抽时间来看高二高三了还是要认真备考先考上好大学。他说。他不爱学习。就想当个黑客。😳。这本数据结构主要是因为都是伪代码不能直接跑可能导致口碑不是很好吧。我觉得还行。
我认真对待的第一门专业主干课,敲了三千多行代码,教材本身中规中矩。
这作者就是我们老师。这本书颠覆了我对编程的看法。我学IT我自豪。