《数据结构基础(C语言版)》是在2009年清华大学出版社出版的图书,作者是(美国)(EllisHorowitz)霍罗维兹、(美国)(SusanAnderson-Freed)安德尔森-费里德。
《数据结构基础(C语言版)第2版》 是最经典数据结构教材的最新版本,国内外大多数的同类教材都是以《数据单威阶及绝务课结构基础(C语言版)第2版》为蓝合段伯德法聚子书本编写而来的。《数据结构基础(C语言版)第2版》用C作为描述语言,全面而生动地介绍了数据结构的有关知识,如数组、栈、队列、链表、树和图,以及构成所有软件基础的排序散列技术。此最造存连抓外,《数据结构基础(C语言版)来自第2版》还介绍了各种高级或特殊数据结构,如优先级队列、高效二叉查找树、多路查找树等。《数据结构基础(C语言版)第2版》对大多数算法都给出了计算时间在最优、最差情形下的复360百科杂度分析。《数据结构基础(C语言版)第2版》不仅可以作为计算机及相关热乐题的分河治绿家飞兴专业本科生"数据结构"课妹犁程的教材,也可以作为研究生第一学年的"高等数据结构"课程的教材,同时,《数据结构基础(C语言版)第2版》所介绍的各种算法的到银排求现材C语言实现,对有关专业人员也具有很好的参考价值。
Ellis Horowitz是南加州大学计算机与电子工程系的教授。Horowitz博士已编著了10多本教材穿染具,并发表了大量学术论文。
SartajSahni是佛罗里达大学计算机与信息科学目妈系的杰出教授和讲座教授。Sa义基占绍案编首位hni博士已发表300多篇学术研究论文,编著了15本教材。
SusanAn后哪重助积derson-Freed是伊利诺伊卫斯理大学计算机教授。她的研究领域是数据库管理系统、Web设计与开发。她毕业于诺伯特大学,并在印第环难宽钢子升安纳大学获得硕士和博士学位,以及在Bradley大学处术获得计算机理学地硕岁名注燃身轻参少士学位。她从1977年起就供职于伊利诺伊卫斯理大学。
第1章基本概念
§1.1概观:系统生命周期
§1顺言先钢易新.2指针和动态存储分朽誉境配
§1.2.1指针
§1.2.2动态存储分配
§1.2.3指针隐患
§1.3算法形式规范
§1.3.1综愉白白榜论
§1.3.2递归算法
§1.4数据抽象
沉 §1.5性能分析
§1.5.1空间复杂度
§1.来自5.2时间复杂度
§1.5.3渐近记号(O,Q,)
360百科 §1.5.4实际复杂度
他每组备的离强 §1.6性能度量
§1.6.1定时
§1.6.2止神率据当生成测试数据
§1.7参考文献和选担营位置死搞地读材料
第2章数组和结构
§2.1数组
§2.1.1数组的抽象数据类型
§2.1.图侵轻讨布燃线2c语言的数组
§2.2数升等帝果组的动态存储分配
§2.2.1一维数组
§2.2.2二维数组
§2.3结明价构体和联合体
§2.3.1结构体
§2.3.2联合体
§2.3.3结构的内部实现
§2.3.4自引用结构
预局丰欢系进 §2.4多项式
§2.4.1多项式的抽象数据类型
§2.4.2多项式的表示
§2.4.3多项式加法
§2.5稀疏矩阵
§2.5.1稀附便背足架先交教固疏矩阵的抽象数据类型
§2浓婷专课够从河大开.5.2稀疏矩阵的表示
某算于年§2.5.3矩阵转置
§2.5.4矩阵相乘
§2.6多维剧支数组的表示
§2.7字符串
§2.7.1字符串鸦润祝的抽象数据类型
§2.至没婷几否岁构武迫了7.2C语言的字符串
§2.7.3模式匹配
§2.8参考文献和选读材料
§2.9补充笑走银尼检习题
第3章栈与队列
§3.1栈
§3.2动态栈
§3.3队列
§3.脸物条件约千袁4动态循环队列
§3.5迷宫问题
§3.6表达式求值
§3.6.1表达式
§3.6.2后缀表达式在求值
§3.6.3中缀表达式转换成后缀表达式
§3.7多重栈与多重队列
§3.8补充习题
第4章链表
§4.1单向链表
§4.2用C语言表示单向链表
§4.3链式栈甩巴射与链式队列
§4.4多项式
§4.4.1多项式表示
§4.4.2多项式加法
§4.4.3销毁多项式
根边关觉§4.4.4循环链表与多项式
§4.4.5小结
§4.5其它链表操作
§4.5.1单向链表操作
§4.5.2循环链表操作
§4.6等价类
§4.7稀疏矩阵
§4.7.1稀疏矩阵表示
§4.7.2输入稀疏矩阵
§4.7.3输出稀疏矩阵
§4.7.4销毁稀疏矩阵
§4.8双向链表
第5章树
§5.1引论
§5.1.1术语
§5.1.2树的表示
§5.2二叉树
§5.2.1二篮催再才叉树的抽象数据类型
§5.2.2二叉树的性质
§5.2.3二叉树的表示
§5.3遍历二叉树
§5.3.1中序遍历
§5.3.2先序遍历
§5.3.3后序遍历
§5.3.4非递归(循环)中序遍历
§5.3.5层序遍历
§5.3.6不设栈遍历二叉树
§5.4其它二叉树操作
§5.4.1复制二叉树
§5.4.2判断两个二叉树全等
§5.4.3可满足性问题
§5.5线索二叉树
§5.5.1线索
§5.5.2中序遍历线索二叉树
§5.5.3线索二叉树插入结点
§5.6堆
§5.6.1优先级队列
§5.6.2大根堆定义
§5.6.3大根堆插入操作
§5.6.4大根堆凶几榜删除操作
§5.7二叉查找树
§5.7.1定义
§5.7.2二叉查找树的查找
§5.7.3二叉查找树的插入
§5.7.4二叉查找树的删除
§5.7.5二叉查找树的合并与分裂
§5.7.6二叉查找树的高度
§5.8选拔树
§5.8.1引子
§5.8.2优胜树
§5.8.3淘汰树
§5.9森林
§5.9.1森林转换为二叉树
§5.9.2遍历森林
§5.10不相交集合的表示
§5.10.1引子
§5.10.2合并与查找操作
§5.10.3划分等价类
§5.11二叉树的计数
§5.11.1不同态二叉树
§5.11.2栈置换
§5.11.3矩阵乘法
§5.11.4不同二叉树的数目
§5.12参考文献和选读材料
第6章图
§6.1图的抽象数据类型
§6.1.1引子
§6.1.2图的定义和术语
§6.1.3图的表示
§6.2图的基本操作
§6.2.1深度优先搜索
§6.2.2广度优先搜索
§6.2.3连通分量
§6.2.4生成树
§6.2.5重连通分量
§6.3最小代价生成树
§6.3.1Kruskal算法
§6.3.2Prim算法
§6.3.3SoUin算法
§6.4最短路径和迁移闭包
§6.4.1单源点至所有其它节点:边权值非负
§6.4.2单源点至所有其它节点:边权值正负无限制
……
第7章排序
第8章Hash法
第9章优先级队列
第10章高效二叉查找树
第11章多路查找树
第12章数字查找结构
索引
……
1.1 概观:系统生命周期
本书读者应具备扎实的结构化程序设计技能。要获得这些技能,读者通常应学过程序设计基础一类课程。这类课程的培养目标就是传授结构化程序设计技能,但课程强调的是语言本身的语法形式与语句使用规则,学生在这个阶段通常只能编写很简单的程序,解决的问题不用说也是很简单的。这类简单问题,一般而言,只要直接选用程序设计语言提供的某语句也许就能完成求解,例如,用数组存储数据,再利用while循环语句,可能就足以解决这一阶段的许多问题了。
本书要指导读者向前迈一大步,大幅度提高编程能力,因为以后编写的程序,其规模要大很多,功能也要复杂得多。不用说,编写规模庞大而复杂的程序,不但需要更强有力的工具,还一定需要更高级的编程技术。我们希望在随后的学习过程,读者应扎实掌握数据的抽象思维方法,同时必须熟练掌握算法的规范声明、算法的性能分析、算法的性能评价等诸多技能。设置本章的目的就是要详细论述这些内容。此外,递归程序设计方法同样至关重要,读者也必须熟练掌握,因此也是本章讨论的内容,但论述得较为简明而且篇幅不很大。我们提请读者注意,如果读者以前对递归程序设计基础未给予足够重视,了解流于肤浅,那么必须仔细研读这方面内容,以后一定会深感大有益处。然而,在讨论各种工具与各项技术之前,我们必须强凋,编程可不仅仅是写程序代码,即写完一条条程序语句就万事大吉了。与之截然相反,优秀的程序员有完全不同的观点。程序设计的首要问题,应该是首先把大规模程序系统分解成许许多多自成体系且相对独立的组成部件,然后再为各部分之间存在的相互调用,定义严格的调用格式。