《数据结构(C++版)学习辅导与实验指导(第2版)》是作者多年讲授“数据结构”课程及指导学生实验的教学经验的集成,与清华大学出版社出版的主教材《数据结构(c++版)(第2版)》相配套。《数据结构(C++版)学习辅导与实验指导(第2版)》分成两篇:第一篇是学习辅导,各章内容由3个模块组成,分别是本章导学、重点难点释疑和习题解析;第二篇是实验指导,各章内容也由3个模块组成,分别是验证实验、设计实验和综合实验。最后在附录中给出了实验报告和课程设计报告的一般格式。
《数据结构(C++版)学习辅导与实验指导(第2版)》可以配合主教材《数据结构(c++版)(第2版)》使用,起到衔接课堂教学和指导实验教学的作用,可作为高等院校本专科学生学习“数据结构”课程的参考教材,也可作为计算机学科研究生入学考试的辅导教材,对于从事计算机软件开发和应用的工程技术人员也具有一定的参考价值。
本书是清华大学出版社出版的“数据结构(C++版)立体化教材”的配套辅导教材,本套立体化教材包括以下几个部分。
(1) 主教材:《数据结构(C++版)(第2版)》,作者王红梅、胡明、王涛。该书根据计算机学科研究生入学考试专业基础综合考试大纲编写,抓住核心概念,提炼基础性内容,侧重工程实践与应用,注重算法设计与程序实现。
(2) 教师用书:《数据结构(C++版)教师用书》,作者王红梅、胡明、王涛。该书主要内容包括教案和讲稿,教案对各个教学专题进行详细设计,讲稿是教学专题的具体实现,体现了详细的教学设计。
(3) 学生用书:《数据结构(C++版)学习辅导和实验指导(第2版)》,作者王红梅、胡明、王涛,即本书,主要内容包括重点难点释疑、习题解析和实验指导。
(4) 考研用书:《数据结构考研辅导》,作者王红梅、胡明。该书主要内容包括考试大纲要求及分析、考核知识点、典型题解析和挑战题解析。
(5) 电子课件:在清华大学出版社网站(http://www.tup.com.cn)可以下载。
(6) 教学网站:http://jsj.ccut.edu.cn/sjjg.
第一篇 学习辅导
第1章 绪论
1.1 本章导学
1.2 重点难点释疑
1.2.1 信息、数据与结构
1.2.2 数据结构、数据类型和抽象数据类型
1.2.3 逻辑结构与存储结构
1.2.4 如何选择或设计数据结构
1.2.5 算法设计的一般原则
1.2.6 算法的时间复杂度分析
1.3 习题解析
1.3.1 课后习题讲解
1.3.2 学习自测及答案
第2章 线性表
2.1 本章导学
2.2 重点难点释疑
2.2.1 存储结构与存取结构
2.2.2 头指针、尾标志、开始结点与头结点
2.2.3 带头结点的单链表与不带头结点的单链表的比较
2.2.4 单链表算法的设计技巧
2.2.5 有序单链表的算法设计技巧
2.2.6 循环链表的算法设计技巧
2.3 习题解析
2.3.1 课后习题讲解
2.3.2 学习自测及答案
第3章 栈和队列
3.1 本章导学
3.2 重点难点释疑
3.2.1 浅析栈的操作特性
3.2.2 递归算法转换为非递归算法
3.2.3 循环队列中队空和队满的判定方法
3.3 习题解析
3.3.1 课后习题讲解
3.3.2 学习自测及答案
第4章 字符串和多维数组
4.1 本章导学
4.2 重点难点释疑
4.2.1 kmp算法中如何求next数组
4.2.2 特殊矩阵压缩存储后存储位置的计算
4.3 习题解析
4.3.1 课后习题讲解
4.3.2 学习自测及答案
第5章 树和二叉树
5.1 本章导学
5.2 重点难点释疑
5.2.1 二叉树和树是两种不同的树结构
5.2.2 二叉树的构造方法
5.2.3 二叉树遍历的递归实现图解
5.2.4 二叉树的算法设计技巧
5.2.5 哈夫曼树的构造过程中应注意的问题
5.3 习题解析
5.3.1 课后习题讲解
5.3.2 学习自测及答案
第6章 图
6.1 本章导学
6.2 重点难点释疑
6.2.1 深度优先遍历算法的非递归实现
6.2.2 图的遍历算法的应用
6.2.3 有向图的强连通分量
6.2.4 改进的拓扑排序算法
6.3 习题解析
6.3.1 课后习题讲解
6.3.2 学习自测及答案
第7章 查找技术
7.1 本章导学
7.2 重点难点释疑
7.2.1 折半查找判定树及其应用
7.2.2 时空权衡
7.2.3 平衡二叉树的调整方法
7.2.4 散列查找的性能分析
7.3 习题解析
7.3.1 课后习题讲解
7.3.2 学习自测及答案
第8章 排序技术
8.1 本章导学
8.2 重点难点释疑
8.2.1 排序算法的稳定性
8.2.2 如何将排序算法移植到单链表上
8.2.3 二叉排序树与堆的区别
8.2.4 递归算法的时间性能分析
8.3 习题解析
8.3.1 课后习题讲解
8.3.2 学习自测及答案
第9章 索引技术
9.1 本章导学
9.2 习题解析
9.2.1 课后习题讲解
9.2.2 学习自测及答案
第二篇 实验指
第10章 基础实验
10.1 实验的一般步骤
10.1.1 概述
10.1.2 验证实验的一般步骤
10.1.3 设计实验和综合实验的一般步骤
10.2 vc++编程工具的使用
10.2.1 控制台程序
10.2.2 单文件结构
10.2.3 多文件结构
10.2.4 程序的调试
第11章 线性表实验
11.1.1 验证实验
11.1.1 顺序表的实现
11.1.2 单链表的实现
11.2 设计实验
11.2.1 约瑟夫环问题
11.2.2 用单链表实现集合的操作
11.3 综合实验
11.3.1 大整数的代数运算
11.3.2 一元多项式相加
第12章 栈和队列实验
12.1 验证实验
12.1.1 顺序栈的实现
12.1.2 链队列的实现
12.2 设计实验
12.2.1 汉诺塔问题
12.2.2 火车车厢重排问题
12.3 综合实验
12.3.1 表达式求值
12.3.2 迷宫问题
第13章 字符串和多维数组实验
13.1 验证实验
13.1.1 串操作的实现
13.1.2 对称矩阵的压缩存储
13.2 设计实验
13.2.1 统计文本中单词的个数
13.2.2 幻方
13.3 综合实验
13.3.1 近似串匹配
13.3.2 数字旋转方阵
第14章 树和二叉树实验
14.1 验证实验
14.1.1 二叉树的实现
14.1.2 树的实现
14.2 设计实验
14.2.1 求二叉树中叶子结点的个数
14.2.2 二叉表示树
14.3 综合实验
14.3.1 信号放大器
14.3.2 哈夫曼算法的应用
第15章 图实验
15.1 验证实验
15.1.1 邻接矩阵的实现
15.1.2 邻接表的实现
15.2 设计实验
15.2.1 tsp问题
15.2.2 哈密顿路径
15.3 综合实验
15.3.1 农夫过河
15.3.2 医院选址问题
第16章 查找技术实验
16.1 验证实验
16.1.1 顺序查找的实现
16.1.2 折半查找的实现
16.1.3 散列查找的实现
16.2 设计实验
16.2.1 二叉排序树的查找性能
16.2.2 闭散列表和开散列表查找性能的比较
16.3 综合实验
16.3.1 个人电话号码查询系统
16.3.2 斐波那契查找
第17章 排序技术实验
17.1 验证实验
17.1.1 插入排序算法的实现
17.1.2 交换排序算法的实现
17.1.3 选择排序算法的实现
17.2 设计实验
17.2.1 直接插入排序基于单链表的实现
17.2.2 双向起泡排序
17.3 综合实验
17.3.1 各种排序算法时间性能的比较
17.3.2 机器调度问题
附录a 实验报告的一般格式
附录b 课程设计报告的一般格式
参考文献