新書推薦:
《
粤港澳大湾区舆论引导与舆情应对精品案例:基于媒介化治理的思考
》
售價:NT$
445.0
《
大地的勇士
》
售價:NT$
340.0
《
中华老学·第十一辑
》
售價:NT$
380.0
《
债务之网:瑞士民商法的发展历史(1800-1900)
》
售價:NT$
345.0
《
ARM嵌入式Linux系统开发详解(第3版)
》
售價:NT$
595.0
《
长寿时代:做自己人生的CFO
》
售價:NT$
310.0
《
早点知道会幸福的那些事
》
售價:NT$
295.0
《
知宋·宋代之货币
》
售價:NT$
340.0
|
內容簡介: |
作者依据ACMIEEE的《计算机科学课程体系规范2013》,参考了近年来国内外很多优秀教材,对《数据结构——使用C++语言描述》一书从教材结构和内容方面都做了很大调整,编写了本教材。本次编写保留了经典数据结构和算法知识,引入更多高级数据结构的内容。本教材重视问题求解,反映抽象、封装和信息隐蔽等现代软件设计理念,重视算法的时间和空间分析,包括查找和排序时间的下界分析。数据结构和算法使用C++语言描述。本教材重视实践性和程序设计。书中算法都有完整的C++程序,构思精巧、结构清晰、注释详细,并且所有程序都已在VC++环境下编译通过并能正确运行。它们既是很好的学习数据结构和算法的示例,也是很好的C++程序设计示例。本教材配有大量的实例和图示,并有丰富的习题和实习题,易教易学。本教材涵盖计算机学科专业考研大纲数据结构部分的考查内容。
|
關於作者: |
陈慧南,教授,南京邮电大学计算机学院,主持了多项信息产业部基金项目的研究工作,并负责了多项企业办公自动化和信息管理网络系统的研制开发。出版多本教材。曾获江苏省普通高校教学成果三等奖,其主持的《数据结构》课程获江苏省高校一类优秀课程。
|
目錄:
|
目 录 第1章 概论11.1 问题求解方法11.1.1 问题和问题求解11.1.2 问题求解过程11.1.3 计算机求解问题的过程21.2 什么是数据结构21.2.1 算法与数据结构21.2.2 数据结构基本概念31.2.3 数据的逻辑结构41.2.4 数据的存储表示51.2.5 数据结构的操作61.3 数据抽象和抽象数据类型71.3.1 数据抽象和过程抽象71.3.2 模块化、封装与信息隐蔽71.3.3 数据类型和抽象数据类型81.4 面向对象方法101.4.1 面向对象方法的由来101.4.2 面向对象方法的基本思想101.4.3 面向对象方法的基本要素111.4.4 抽象数据类型和面向对象方法121.4.5 C++语言对抽象数据类型的支持131.5 描述数据结构和算法131.5.1 数据结构的规范131.5.2 实现数据结构141.6 算法分析的基本方法151.6.1 算法及其性能标准151.6.2 算法的时间复杂度161.6.3 渐近时间复杂度181.6.4 好、坏和平均情况时间复杂度191.6.5 算法按时间复杂度分类191.6.6 算法的空间复杂度19本章小结20习题120第2章 数组和链表222.1 两种基本的存储表示方式222.2 结构和类222.2.1 结构222.2.2 结构表示元素232.3 指针和动态存储分配242.3.1 指针242.3.2 动态存储分配252.3.3 静态变量和动态变量262.4 数组262.4.1 一维数组262.4.2 二维数组272.4.3 多维数组282.4.4 数组和指针282.4.5 固定长度数组和可变长度数组282.5 链表292.5.1 指向结构的指针302.5.2 单链表302.5.3 带表头结点的单链表332.5.4 单循环链表332.5.5 双向链表332.6 采用模拟指针的链表352.6.1 结点结构352.6.2 可用空间表352.7 异常处理37本章小结38习题238第3章 栈和队列403.1 栈403.1.1 栈ADT403.1.2 栈的顺序表示413.1.3 栈的链接表示443.2 队列473.2.1 队列ADT473.2.2 队列的顺序表示483.2.3 队列的链接表示513.3 表达式计算513.3.1 表达式513.3.2 中缀表达式转换为后缀表达式523.3.3 计算后缀表达式的值553.4 演示与测试58本章小结61习题361第4章 递归634.1 递归和递归算法634.1.1 递归的概念634.1.2 递归算法示例644.2 归纳证明664.3 递推关系674.4 实现递归674.4.1 函数调用和系统栈684.4.2 递归函数的性能694.4.3 尾递归694.4.4 消去递归70本章小结70习题470第5章 线性表和串725.1 线性表725.1.1 线性表ADT725.1.2 线性表的顺序表示735.1.3 线性表的链接表示765.1.4 两种存储表示的比较795.2 一元多项式算术运算805.2.1 多项式ADT805.2.2 多项式的链接表示805.2.3 项结点类815.2.4 多项式类825.2.5 多项式的输入和输出835.2.6 多项式相加845.2.7 多项式相乘855.2.8 重载运算符865.3 串865.3.1 串ADT865.3.2 串的存储表示875.3.3 串运算的实现885.3.4 简单模式匹配算法895.3.5 KMP算法91本章小结95习题595第6章 数组和广义表976.1 数组作为抽象数据类型976.1.1 数组ADT976.1.2 一维数组的C++类986.2 矩阵996.2.1 矩阵的概念996.2.2 矩阵ADT996.2.3 矩阵的二维数组表示1006.3 特殊矩阵1016.3.1 对称矩阵1016.3.2 带状矩阵1026.4 稀疏矩阵1036.4.1 稀疏矩阵的三元组表1036.4.2 稀疏矩阵转置1056.4.3 稀疏矩阵相加1076.4.4 稀疏矩阵相乘1086.5 稀疏矩阵的正交链表1096.5.1 正交链表结构1096.5.2 正交链表结点类1106.5.3 正交链表类1116.5.4 建立正交链表1116.5.5 输出正交链表1136.6 广义表1136.6.1 广义表的概念1136.6.2 广义表ADT1146.6.3 广义表的存储表示1156.6.4 广义表算法116本章小结116习题6117第7章 树1187.1 树的基本概念1187.1.1 树的定义1187.1.2 基本术语1197.2 二叉树1207.2.1 二叉树的定义1207.2.2 二叉树的性质1217.2.3 二叉树ADT1227.2.4 二叉树的存储表示1237.2.5 二叉树类1237.2.6 实现二叉树的基本操作1247.3 二叉树的遍历1267.3.1 二叉树遍历算法1267.3.2 二叉树遍历的递归算法1287.3.3 二叉树遍历的应用实例1297.4 二叉树遍历的非递归算法1317.4.1 遍历器类1317.4.2 中序遍历器类1327.4.3 后序遍历器类1347.5 二叉线索树1367.5.1 二叉线索树的定义1367.5.2 构造中序线索树1377.5.3 遍历中序线索树1387.6 树和森林1397.6.1 森林与二叉树的转换1397.6.2 树和森林的存储表示1417.6.3 树和森林的遍历142本章小结143习题7143第8章 树的应用1458.1 堆1458.1.1 堆的定义1458.1.2 堆的顺序表示1458.1.3 向下调整和建堆操作1458.2 优先权队列1478.2.1 优先权队列ADT1478.2.2 优先权队列类1488.2.3 实现优先权队列1488.3 哈夫曼树和哈夫曼编码1508.3.1 树的路径长度1518.3.2 哈夫曼算法1528.3.3 哈夫曼树类1528.3.4 构造哈夫曼树1538.3.5 哈夫曼编码1558.3.6 哈夫曼编码算法1568.4 并查集和等价关系1568.4.1 并查集ADT1578.4.2 并查集的存储表示1578.4.3 并查集类1588.4.4 Union和Find函数1598.4.5 改进的Union和Find函数1598.4.6 按等价关系分组160本章小结161习题8161第9章 字典和查找1629.1 字典及其表示1629.1.1 字典1629.1.2 字典查找1639.1.3 字典ADT1639.1.4 字典的存储表示1649.2 顺序查找1659.2.1 无序表的顺序查找1659.2.2 有序表的顺序查找1659.2.3 平均查找长度1669.2.4 自组织表1669.3 二分查找1679.3.1 二分查找算法1679.3.2 对半查找算法1689.3.3 二叉判定树1699.3.4 斐波那契查找算法1709.3.5 插值查找1729.4 分块查找1729.5 查找算法的时间复杂度下界173本章小结174习题9174第10章 二叉查找树17510.1 二叉查找树表示字典17510.1.1 二叉查找树的定义17510.1.2 二叉查找树的查找操作17610.1.3 二叉查找树的插入操作17710.1.4 二叉查找树的删除操作17810.1.5 二叉查找树的高度17910.2 二叉平衡树17910.2.1 二叉平衡树的定义17910.2.2 二叉平衡树类18010.2.3 二叉平衡树的平衡旋转18110.2.4 二叉平衡树的插入操作18510.2.5 二叉平衡树的删除操作18710.2.6 二叉平衡树的高度18910.3 伸展树19010.3.1 自调节树和伸展树19010.3.2 伸展树的伸展操作19110.3.3 伸展树类19310.3.4 旋转的实现19310.3.5 伸展树的插入操作19410.3.6 分摊时间分析19510.4 红黑树19510.4.1 红黑树的定义19510.4.2 红黑树的查找操作19610.4.3 红黑树的插入操作19610.4.4 红黑树的删除操作19810.4.5 红黑树的高度199本章小结199习题10199第11章 多叉查找树20111.1 m叉查找树20111.2 B?树20211.2.1 B?树的定义20311.2.2 B?树的高度20311.2.3 B?树的查找操作20311.2.4 B?树的插入操作20411.2.5 B?树的删除操作20611.2.6 B?树类20711.2.7 B?树的查找操作20811.2.8 B?树的插入函数20911.2.9 B?树的删除函数21011.3 键树21211.3.1 键树的定义21211.3.2 双链树21311.3.3 Trie树21411.3.4 Trie树的查找操作21611.3.5 Trie树的插入操作21611.3.6 Trie树的删除操作21711.3.7 Trie树性能分析217本章小结218习题11218第12章 跳表和散列表21912.1 跳表21912.1.1 跳表的概念21912.1.2 跳表类22112.1.3 跳表的查找函数22212.1.4 跳表的插入函数22312.1.5 跳表的删除函数22412.1.6 性能分析22412.2 散列表22412.2.1 散列技术22512.2.2 散列函数22612.2.3 拉链法22712.2.4 开地址法22812.2.5 线性探查法22812.2.6 其他开地址法23112.2.7 性能分析233本章小结233习题12234第13章 图23513.1 图的基本概念23513.1.1 图的定义与术语23513.1.2 图的抽象数据类型23713.2 图的存储结构23813.2.1 图的矩阵表示23813.2.2 图的邻接矩阵实现23913.2.3 图的邻接表表示24113.2.4 图的邻接表实现24213.2.5 有向图的正交链表表示24513.2.6 无向图的邻接多重表表示24513.3 图的遍历24613.3.1 扩充的图类24613.3.2 1
|
|