数据结构(C语言版)].严蔚敏 带书签版
内容简介 《数据结构》(C语言版)是为“数据结构”课程编写的教材,也可作为学习数据结构及其算法的C程 序设计的参考教材。 本书的前半部分从抽象数据类型的角度讨论各种基本类型的数据结构及其应用;后半部分主要讨 论査找和排序的各种实现方法及其综合分析比较。其内容和章节编排与1992年4月出版的《数据结 构》第二版)基本一致,但在本书中更突出了抽象数据类型的概念。全书采用类C语言作为数据结构和 算法的描述语言。 本书概念表述严谨,逻辑推理严密,语言精炼,用词达意,并有配套出版的《数据结构题集》(C语言 版),既便于教学,又便于自学。 本书后附有光盘。光盘中含有可在DOS环境下运行的以类C语言描述的“数据结构算法动态模拟 辅助教学软件,以及在 Windows环境下运行的以类 PASCAL或类C两种语言描述的“数据结构算法动 态模拟辅助教学软件”。 本书可作为计算机类专业或信息类相关专业的本科或专科教材,也可供从事计算机工程与应用工 作的科技工作者参考。 本书封面贴有清华大学出版社防伪标签,无标签者不得销售。 版权所有,侵权必究。侵权举报电话:010-6278298913701121933 图书在版编目(CIP)数据 数据结构:C语言版/严蔚敏,吴伟民编著.一北京:清华大学出版社,2007 (清华大学计算机系列教材) ISBN978-7-302-14751-0 I.数...II.1严...2吴...III.1数据结构一高等学校一教材2C语言一程序设计 高等学校一教材IV.TP311.12.TP312 中国版本图书馆CIP数据核字(2007)第024916号 责任编辑:范素珍 责任印制:王秀菊 出版发行:清华大学出版社 地址:北京清华大学学研大厦A座 http://www.tup.com.cn 邮编:100084 社总机:010-62770175 邮购:010-6278654 投稿与读者服务:010-62776969,c-service@uup.tsinghua.edu.cn 质量反馈:010-62772015,zhiliang@tup.tsinghua.edu.cn 印刷者:北京密云胶印厂 装订者:北京市密云县京文制本装订厂 经销:全国新华书店 开本:185×260印张:21.75字数:493千字 附光盘1张 印次:2009年9月第30次印刷 印数:408001~458000 定价:30.00元 本书如存在文字不清漏印、缺页、倒页、脱页等印装质量问题,请与清华大学出版社出版部联系 调换。联系电话:(010)62770177转3103产品编号:025648-01/TP www.topsage.com 大彭两 Top Sage. com 前言 “数据结构”是计算机程序设计的重要理论技术基础,它不仅是计算机学 科的核心课程,而且已成为其他理工专业的热门选修课。本书是为“数据结 构”课程编写的教材,其内容选取符合教学大纲要求,并兼顾学科的广度和深 度,适用面广。 本书的第1章综述数据、数据结构和抽象数据类型等基本概念;第2章至 第7章从抽象数据类型的角度,分别讨论线性表、栈、队列、串、数组、广义表、 树和二叉树以及图等基本类型的数据结构及其应用;第8章综合介绍操作系 统和编译程序中涉及的动态存储管理的基本技术;第9章至第11章讨论查找 和排序,除了介绍各种实现方法之外,并着重从时间上进行定性或定量的分析 和比较;第12章介绍常用的文件结构。用过《数据结构》(第二版)的读者容易 看出,本书内容和章节编排与1992年4月出版的《数据结构》(第二版)基本一 致,但在本书中更突出了抽象数据类型的概念。对每一种数据结构,都分别给 出相应的抽象数据类型规范说明和实现方法。 全书中采用类C语言作为数据结构和算法的描述语言,在对数据的存储 结构和算法进行描述时,尽量考虑C语言的特色,如利用数组的动态分配实现 顺序存储结构等。虽然C语言不是抽象数据类型的理想描述工具,但鉴于目 前和近一两年内,“面向对象程序设计”并非数据结构的先修课程,故本书未直 接采用类和对象等设施,而是从C语言中精选了一个核心子集,并增添C+ 语言的引用调用参数传递方式等,构成了一个类C描述语言。它使本书对各 种抽象数据类型的定义和实现简明清晰,既不拘泥于C语言的细节,又容易 转换成能上机执行的C或C++程序。 从课程性质上讲,“数据结构”是一门专业技术基础课。它的教学要求是: 学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适 当的逻辑结构、存储结构及其相应的算法,并初步掌握算法的时间分析和空间 分析的技术。另一方面,本课程的学习过程也是复杂程序设计的训练过程,要 求学生编写的程序结构清楚和正确易读,符合软件工程的规范。如果说高级 语言程序设计课程对学生进行了结构化程序设计(程序抽象)的初步训练的 话,那么数据结构课程就要培养他们的数据抽象能力。本书将用规范的数学 语言描述数据结构的定义,以突出其数学特性,同时,通过若干数据结构应用 实例,引导学生学习数据类型的使用,为今后学习面向对象的程序设计作一些 www.topsage.com 铺垫。 本书可作为计算机类专业的本科或专科教材,也可以作为信息类相关专 业的选修教材,讲授学时可为50至80。教师可根据学时、专业和学生的实际 情况,选讲或不讲目录页中带头兴的章节,甚至删去第5、8、11和12章。本书 文字通俗,简明易懂,便于自学,也可供从事计算机应用等工作的科技人员参 考。只需掌握程序设计基本技术便可学习本书。若具有离散数学和概率论的 知识,则对书中某些内容更易理解。如果将本书《数据结构》(C语言版)和《数 据结构》(第二版)作为关于数据结构及其算法的C和 Pascal程序设计的对照 教材,则有助于快速且深刻地掌握这两种语言 与本书配套的还有《数据结构题集》(C语言版),由清华大学出版社出版。 书中提供配套的习题和实习题,并可作为学习指导手册 严蔚敏清华大学计算机科学与技术系 吴伟民广东工业大学计算机学院 www.topsage.com 大彭两 lepage conm 目录 第1章绪论 1.1什么是数据结构.........................................................1 1.2基本概念和术语... 1.3抽象数据类型的表示与实现... 1.4算法和算法分析............ ...............13 14,1算法......... .........13 1.4.2算法设计的要求......13 1.4.3算法效率的度量... 14 1.4.4算法的存储空间需求...............17 第2章线性表 由t音ts量+分当垂垂中普非自日目鲁 18 2.1线性表的类型定义... 睡a.自自着a非市非中日中查中吾垂香是 18 2.2线性表的顺序表示和实现.................. ...21 2.3线性表的链式表示和实现... ..................27 2.3.1线性链表... ...27 2.3.2循环链表................................................35 2.3.3双向链表... ..................35 2.4一元多项式的表示及相加.................................39 第3章栈和队列 44 3.1栈.................. 自着申自自 44 3.1.1抽象数据类型栈的定义......... 44 3.1.2栈的表示和实现...............45 3.2栈的应用举例 垂吾吾吾吾 48 3.2.1数制转换... ...............48 3.22括号匹配的检验......49 3.2.3行编辑程序 49 32.4迷宫求解.....................5 32.5表达式求值... ...52 3.3栈与递归的实现 ......54 3.4队列................................. 58 3.4.1抽象数据类型队列的定义...........................58 3.4.2链队列——队列的链式表示和实现... 60 3.4.3循环队列——队列的顺序表示和实现..................63 3.5离散事件模拟...... 65 III www.topsage.com 第4章串 70 4.1串类型的定义 .................................70 4.2串的表示和实现... b◆●d●●●●鲁自音●。中·自·●自 ......72 4.2.1定长顽序存储表示 4.2.2堆分配存储表示... 75 4.2.3串的块链存储表示 *4.3串的模式匹配算法 79 4.3.1求子串位置的定位函数 Index(S,T,pos)......... 79 4.3.2模式匹配的一种改进算法 80 4.4串操作应用举例... ···者申◆鲁 84 4.4.1文本编辑 看·命。自·◆···非●非●自。菲章 84 °4.4.2建立词索引表... 第5章数组和广义表 ·D●·●·。·· 90 5.1数组的定义... 咖●鲁● 90 5.2数组的顺序表示和实现.............................................91 5.3矩阵的压缩存储 95 5.3.1特殊矩阵 看···鲁··鲁 95 5.3.2稀疏矩阵 96 5.4广义表的定义 自自鲁自●鲁普看自聊 ·····● 106 5.5广义表的存储结构 ..................109 5.6m元多项式的表示... 110 5.7广义表的递归算法 112 7.1求广义表的深度 自非 113 5.7.2复制广义表... ..................15 5.7.3建立广义表的存储结构 115 第6章树和二叉树... 118 6.1树的定义和基本术语... 118 6.2二叉树 命◆自。●。4·●.··自·命a·合.●·●● 6.2.1二叉树的定义 121 6.2.2二叉树的性质... ......123 6.2.3二叉树的存储结构 ............126 6.3遍历二叉树和线索二叉树... ......128 6.3.1遍历二叉树... ............128 6.3.2线索二叉树......... 6.4树和森林... ●鲁血鲁兽·鲁··。● 135 6.4.1树的存储结构... ............135 6.4.2森林与二叉树的转换... 137 6.4.3树和森林的遍历... ●非。普鲁。章··自 138 IV www.topsage.com 大彭两 6.5树与等价问题... ·非量市·,,想平 139 Com 6.6赫夫曼树及其应用... ,,......“...............144 6.6.1最优二叉树(赫夫曼树)................................. 144 6.6.2赫夫曼编码... 非·中....非·日音面音晋吾香平·香 146 6.7回溯法与树的遍历... 世e 149 ·6.8树的计数... “at由当吾是号吾干···.·1 152 第7章图... ∴............156 7.1图的定义和术语...................................................156 7.2图的存储结构... tts香垂得. 160 7.2.1数组表示法......................................................161 7.2.2邻接表... ......163 7.2.3十字链表......................................................164 7.2.4邻接多重表 ...........................1166 7.3图的遍历 ...167 7.3.1深度优先搜索... ..................167 7.3.2广度优先搜索... 169 7.4图的连通性问题 ...............170 7.4.1无向图的连通分量和生成树... 170 7.4.2有向图的强连通分量..............................172 7.4.3最小生成树..................... ∴..................173 7.4.4关节点和重连通分量 ..................176 7.5有向无环图及其应用... ........................179 7.5.1拓扑排序......................................................180 7.5.2关键路径 183 6最短路径..........................................186 7.6.1从某个源点到其余各顶点的最短路径... 187 7.6.2每一对顶点之间的最短路径...... 190 第8章动态存储管理... ..................193 8.1概述........................ ......193 8.2可利用空间表及分配方法.........9 8.3边界标识法 .........198 8.3.1可利用空间表的结构... 198 8.3.2分配算法...............19 8.3.3回收算法 201 8.4伙伴系统 .....................203 8.4.1可利用空间表的结构......0203 8.4.2分配算法 ...204 8.4.3回收算法..........................................205 www.topsage.com 8.5无用单元收集......... 206 8.6存储紧缩 ●曹鲁●看●鲁 ....................................212 第9章查找 b咖t·。tbat●●b●·●非●非参。。··果a乘·●电非自命·看 214 91静态查找表........................216 9.1.1顺序表的查找 216 9.1.2有序表的查找 218 9.1.3静态树表的查找... ∴.........222 9.1.4索引顺序表的查找 225 9.2动态查找表.....................................................................226 9.2.1二叉排序树和平衡二叉树... 227 9.2.2B_树和B树 ·················● 238 9.2.3键树 9.3哈希表...........................251 9.3.1什么是哈希表... ●鲁 251 9.3.2哈希函数的构造方法... b··。非·●。●单非是自·看鲁●自·命·◆音非命4·●·● 253 9.3.3处理冲突的方法 256 9.3.4哈希表的查找及其分析... ·●·················· ......259 第10章内部排序... 263 10.1概述... ·s···◆···◆··命非单卓a·····:·········●···●·●···●·· 263 10.2插入排序 ..................265 10.2.1直接插入排序... 265 10.2.2其他插入排序 ..............................266 10.2.3希尔排序 ··.································· .........271 10.3快速排序 ...........................272 10.4选择排序............... 鲁 ......277 10.4.1简单选择排序... t自垂b看看●鲁●●·● ............277 10.4.2树形选择排序 278 10.4.3堆排序... ●.自自自····● 鲁●非 279 10.5归并排序... ........................283 10.6基数排序... ●●·●。·非自自···要··命命咖命●● .........284 10.6.1多关键字的排序...... ...............284 10.6.2链式基数排序... 10.7各种内部排序方法的比较讨论....................................288 第11章外部排序... 293 11.1外存信息的存取... 293 11.2外部排序的方法... 295 11.3多路平衡归并的实现......... ●鲁●·章卓t ............297 11.4置换选择排序 ∴............299 VI www.topsage.com 大彭两 11.5最佳归并树 ...304 第12章文件...................................."............"3DOm 12.1有关文件的基本概念 12.2顺序文件......... 308 12.3索引文件..............................................................................311 12.4ISAM文件和VSAM文件...................................................313 12.4.1ISAM文件........................... 313 12.4.2VSAM文件 ...316 12.5直接存取文件(散列文件)............................................................317 12.6多关键字文件............... ......319 12.6.1多重表文件..................................................................319 12.6.2倒排文件......... .....................319 附录A名词索引......... .....................322 附录B函数索引.................. 329 参考书目......... .................................334 www.TopSagecom
下载地址
用户评论