关于我们
![]() ![]() |
数据结构 读者对象:本书既可作为高职院校计算机专业的教材,也可作为其他相关专业和工程技术人员的参考书。
本书基于C 语言,以项目的形式组织内容,循序渐进地讲解数据结构的基本原理和具体应用方法。本书共9 个项目,具体内容包括数据结构概述、线性表、栈和队列、串、数组和广义表、树与二叉树、图、查找、排序。本书实例丰富、内容翔实、简单易学,不仅适合作为职业院校计算机相关专业的教材,也可供从事计算机相关工作的专业人士参考。
方加娟,Autodesk中国认证考试中心首席专家,全面负责Autodesk中国官方认证考试大纲制定、题库建设、技术咨询和师资力量培训工作。其创作的很多教材成为国内具有引导性的旗帜作品,在国内相关专业方向图书创作领域具有举足轻重的地位。
目 录
项目一 数据结构概述························································································1 任务一 数据结构概述··················································································1 任务引入······························································································1 任务分析······························································································1 知识准备······························································································2 一、基本概念························································································2 二、研究对象························································································3 三、数据逻辑结构分类············································································5 四、常用数据结构··················································································6 任务二 算法······························································································7 任务引入······························································································7 任务分析······························································································7 知识准备······························································································7 一、算法简介························································································7 二、算法设计的要求···············································································8 三、算法效率的评价···············································································8 四、常用语句阶的计算············································································9 任务三 C 语言基础··················································································.10 任务引入···························································································.10 任务分析···························································································.10 知识准备···························································································.10 一、C 语言简介··················································································.10 二、C 语言特点··················································································.11 三、C 语言基本结构············································································.13 四、C 语言关键字···············································································.14 五、C 语言语法结构············································································.15 六、C 语言程序··················································································.17 项目二 线性表······························································································.23 任务一 线性表概述··················································································.23 任务引入···························································································.23 任务分析···························································································.23 知识准备···························································································.23 一、定义···························································································.24 二、抽象数据类型线性表······································································.24 任务二 线性表的顺序存储结构···································································.26 任务引入···························································································.26 任务分析···························································································.26 知识准备···························································································.26 一、顺序存储结构···············································································.26 二、基本操作的实现············································································.27 任务三 线性表的链式存储结构···································································.29 任务引入···························································································.29 任务分析···························································································.29 知识准备···························································································.30 一、单链表························································································.30 二、基本操作的实现············································································.31 三、循环链表·····················································································.34 四、双向链表·····················································································.35 案例——一元多项式的表示及相加··························································.37 项目三 栈和队列···························································································.39 任务一 栈······························································································.39 任务引入···························································································.39 任务分析···························································································.39 知识准备···························································································.39 一、栈的定义及其运算·········································································.39 二、栈的顺序存储结构·········································································.40 三、栈的链式存储结构·········································································.42 四、栈的应用·····················································································.44 任务二 队列···························································································.46 任务引入···························································································.46 任务分析···························································································.46 知识准备···························································································.46 一、抽象数据类型队列的定义································································.46 二、链队列——队列的顺序表示和实现····················································.48 三、循环队列——队列的循环表示和实现·················································.50 项目四 串····································································································.53 任务一 串及其基本运算············································································.53 任务引入···························································································.53 任务分析···························································································.53 知识准备···························································································.53 一、串的基本概念···············································································.54 二、串的基本运算···············································································.54 任务二 串的存储结构及基本运算································································.55 任务引入···························································································.55 任务分析···························································································.55 知识准备···························································································.55 一、串的定长顺序存储·········································································.55 二、定长顺序串的基本运算···································································.56 三、串的链式存储结构·········································································.58 任务三 串的堆存储结构············································································.59 任务引入···························································································.59 任务分析···························································································.59 知识准备···························································································.59 一、串名的存储映像············································································.59 二、堆存储结构··················································································.61 三、基于堆结构的基本运算···································································.61 四、串的应用举例:文本编辑································································.61 项目五 数组和广义表·····················································································.64 任务一 数组···························································································.64 任务引入···························································································.64 任务分析···························································································.64 知识准备···························································································.64 一、数组概念及其存储结构···································································.65 二、特殊矩阵的压缩存储······································································.66 三、稀疏矩阵·····················································································.67 任务二 广义表························································································.71 任务引入···························································································.71 任务分析···························································································.71 知识准备···························································································.71 一、广义表的定义···············································································.71 二、广义表的存储结构·········································································.72 项目六 树与二叉树························································································.75 任务一 树······························································································.75 任务引入···························································································.75 任务分析···························································································.76 知识准备···························································································.76 一、树的定义·····················································································.76 二、树的基本术语···············································································.76 任务二 二叉树························································································.77 任务引入···························································································.77 任务分析···························································································.77 知识准备···························································································.77 一、二叉树的定义···············································································.77 二、二叉树的基本特点·········································································.78 三、二叉树的基本操作·········································································.78 四、特殊形态的二叉树·········································································.78 五、二叉树的性质···············································································.80 六、二叉树的存储结构·········································································.81 任务三 遍历二叉树··················································································.82 任务引入···························································································.82 任务分析···························································································.82 知识准备···························································································.83 一、相关概念·····················································································.83 二、遍历二叉树的操作及算法································································.83 案例——二叉树的遍历·········································································.85 三、根据遍历序列推导二叉树································································.86 案例——根据二叉树的遍历序列推导二叉树··············································.86 任务四 线索二叉树··················································································.87 任务引入···························································································.87 任务分析···························································································.87 知识准备···························································································.87 任务五 树、森林与二叉树的转换································································.90 任务引入···························································································.90 任务分析···························································································.90 知识准备···························································································.90 一、树的存储结构···············································································.90 二、树、森林与二叉树的转换方法··························································.92 三、树与森林的遍历············································································.95 任务六 哈夫曼树及其应用·········································································.95 任务引入···························································································.95 任务分析···························································································.96 知识准备···························································································.96 一、基本概念·····················································································.96 二、哈夫曼树的构造过程······································································.96 三、哈夫曼编码的构造·········································································.97 案例——构造哈夫曼编码······································································.98 四、哈夫曼编码的几点结论···································································.99 项目七 图····································································································101 任务一 图的定义和基本术语······································································101 任务引入···························································································101 任务分析···························································································102 知识准备···························································································102 一、图的定义·····················································································102 二、图的基本术语···············································································102 三、图的抽象数据类型·········································································107 任务二 图的存储·····················································································107 任务引入···························································································107 任务分析···························································································107 知识准备···························································································108 一、图的邻接矩阵表示法······································································108 二、图的邻接表表示法·········································································111 三、邻接多重表··················································································115 任务三 图的遍历·····················································································116 任务引入···························································································116 任务分析···························································································117 知识准备···························································································117 一、图的遍历·····················································································117 二、深度优先遍历···············································································117 三、广度优先遍历···············································································119 四、图的连通性问题············································································121 任务四 图的应用·····················································································121 任务引入···························································································121 任务分析···························································································121 知识准备···························································································122 一、最小生成树··················································································122 二、最小生成树性质MST ·····································································122 三、普里姆算法··················································································122 四、克鲁斯卡尔算法············································································125 任务五 最短路径·····················································································126 任务引入···························································································126 任务分析···························································································126 知识准备···························································································126 一、迪杰斯特拉算法············································································126 二、迪杰斯特拉算法的思想···································································126 三、迪杰斯特拉算法的分析和实现··························································127 任务六 弗洛伊德算法···············································································128 任务引入···························································································128 任务分析···························································································128 知识准备···························································································129 一、弗洛伊德算法思想·········································································129 二、弗洛伊德算法过程·········································································129 三、弗洛伊德算法的分析和实现·····························································130 任务七 拓扑排序·····················································································131 任务引入···························································································131 任务分析···························································································131 知识准备···························································································131 一、AOV 网·······················································································131 二、拓扑排序·····················································································132 任务八 关键路径·····················································································134 任务引入···························································································134 任务分析···························································································134 知识准备···························································································134 一、相关概念·····················································································134 二、求关键路径算法思想······································································135 项目八 查找·································································································137 任务一 查找的相关概念············································································137 任务引入···························································································137 任务分析···························································································137 知识准备···························································································138 一、查找的相关概念············································································138 二、查找的性能指标············································································138 任务二 静态查找表··················································································138 任务引入···························································································138 任务分析···························································································138 知识准备···························································································139 任务三 折半查找·····················································································140 任务引入···························································································140 任务分析···························································································140 知识准备···························································································141 案例——折半查找···············································································141 任务四 分块查找·····················································································143 任务引入···························································································143 任务分析···························································································143 知识准备···························································································143 任务五 树表查找·····················································································144 任务引入···························································································144 任务分析···························································································144 知识准备···························································································144 一、二叉排序树的定义·········································································144 二、二叉排序树的结构定义···································································145 三、二叉排序树的查找·········································································145 四、二叉排序树的插入与创建································································146 五、二叉排序树的创建·········································································147 实例——创建二叉排序树······································································147 任务六 平衡二叉树··················································································151 任务引入···························································································151 任务分析···························································································151 知识准备···························································································152 一、相关概念·····················································································152 二、平衡二叉树的平衡调整方法·····························································153 任务七 散列表查找··················································································156 任务引入···························································································156 任务分析···························································································157 知识准备···························································································157 一、常用术语·····················································································157 二、散列函数的构造方法······································································158 三、处理冲突的方法············································································160 案例——线性探测再散列······································································161 案例——二次探测法············································································162 案例——链地址法解决冲突···································································162 四、散列表的查找···············································································163 案例——散列表的查找·········································································163 项目九 排序·································································································166 任务一 概述···························································································166 任务引入···························································································166 任务分析···························································································166 知识准备···························································································167 一、排序相关概念···············································································167 二、内部排序的算法效率衡量································································167 三、内部排序算法的分类······································································167 四、数据类型定义···············································································168 任务二 插入排序·····················································································168 任务引入···························································································168 任务分析···························································································168 知识准备···························································································168 一、插入排序的基本思想······································································168 二、直接插入排序···············································································169 三、折半插入排序···············································································170 四、希尔排序·····················································································172 案例——希尔排序···············································································174 任务三 交换排序·····················································································175 任务引入···························································································175 任务分析···························································································175 知识准备···························································································175 一、交换排序的基本思想······································································175 二、冒泡排序·····················································································175 任务四 快速排序·····················································································177 任务引入···························································································177 任务分析···························································································177 知识准备···························································································177 案例——快速排序···············································································179 任务五 选择排序·····················································································180 任务引入···························································································180 任务分析···························································································180 知识准备···························································································180 一、选择排序的算法思想······································································180 二、简单选择排序···············································································181 三、堆排序························································································182 任务六 归并排序·····················································································189 任务引入···························································································189 任务分析···························································································189 知识准备···························································································189
你还可能感兴趣
我要评论
|