作品简介

本书分为上、下两篇,共10章。上篇用5章的篇幅介绍了算法和数据结构的基础知识,包括基础算法思想、简单数据结构、复杂数据结构、排序和查找算法等内容;下篇用5章的篇幅介绍了用数据结构解决实际问题的相关程序,包括解决数学问题、数据结构问题、算法经典问题等内容以及信息学奥赛部分试题的程序,最后一章介绍了与算法和数据结构相关的常见面试题。

本书案例实用性强、结构清晰、实例代码讲解详尽,可作为大中专院校学生学习数据结构以及做课程设计的参考书,也可以作为有一定程序设计基础的程序员的参考书,还可作为参加信息学奥赛选手的参考书。

作者戴艳,参与编写多个版本的零基础学算法。

作品目录

  • 前 言
  • 上篇 算法与数据结构基础
  • 第1章 基础算法思想
  • 1.1 编程的灵魂:数据结构+算法
  • 1.2 算法的作用:猜价格游戏
  • 1.2.1 算法的作用
  • 1.2.2 实例:看商品猜价格
  • 1.3 枚举(穷举)算法思想
  • 1.3.1 算法思路
  • 1.3.2 实例:填数游戏
  • 1.3.3 实例:填运算符
  • 1.4 递推算法思想
  • 1.4.1 算法思路
  • 1.4.2 顺推实例:斐波那契数列
  • 1.4.3 逆推实例:该存多少钱
  • 1.5 递归算法思想
  • 1.5.1 算法思路
  • 1.5.2 实例:求阶乘
  • 1.5.3 实例:数制转换
  • 1.6 分治算法思想
  • 1.6.1 算法思路
  • 1.6.2 实例:乒乓球比赛日程安排
  • 1.7 贪婪算法思想
  • 1.7.1 算法思路
  • 1.7.2 实例:换零钱
  • 1.8 试探法算法思想
  • 1.8.1 算法思路
  • 1.8.2 实例:生成彩票号码组合
  • 1.9 模拟算法
  • 1.9.1 算法思路
  • 1.9.2 实例:猜数游戏
  • 1.9.3 实例:模拟掷骰子游戏
  • 1.10 算法的评价
  • 1.10.1 算法评价原则
  • 1.10.2 算法的效率
  • 1.11 上机实践
  • 第2章 简单数据结构
  • 2.1 最简单的结构:线性表
  • 2.1.1 线性表的概念
  • 2.1.2 操作顺序表
  • 2.1.3 操作链表
  • 2.1.4 实例:用链表制作通讯录
  • 2.2 后进先出结构:栈
  • 2.2.1 栈的概念
  • 2.2.2 操作栈
  • 2.2.3 实例:算术表达式求值
  • 2.3 先进先出结构:队列
  • 2.3.1 什么是队列
  • 2.3.2 操作队列
  • 2.3.3 循环队列的操作
  • 2.3.4 实例:银行排号程序
  • 2.4 上机实践
  • 第3章 复杂数据结构
  • 3.1 层次关系结构:树
  • 3.1.1 树的概念
  • 3.1.2 二叉树的概念
  • 3.1.3 二叉树的存储
  • 3.1.4 操作二叉树
  • 3.1.5 遍历二叉树
  • 3.1.6 测试二叉树
  • 3.1.7 线索二叉树
  • 3.1.8 最优二叉树(赫夫曼树)
  • 3.2 网状关系:图
  • 3.2.1 图的定义和基本术语
  • 3.2.2 图的存储
  • 3.2.3 图的创建
  • 3.2.4 图的遍历
  • 3.2.5 最小生成树
  • 3.2.6 最短路径
  • 3.3 上机实践
  • 第4章 常用算法——排序
  • 4.1 排序概述
  • 4.1.1 排序算法分类
  • 4.1.2 数据准备
  • 4.2 冒泡排序法
  • 4.2.1 冒泡排序法概述
  • 4.2.2 改进的冒泡排序法
  • 4.3 快速排序法
  • 4.3.1 算法描述
  • 4.3.2 算法实现
  • 4.4 简单选择排序法
  • 4.5 堆排序法
  • 4.5.1 算法描述
  • 4.5.2 算法实现
  • 4.6 直接插入排序法
  • 4.6.1 算法描述
  • 4.6.2 算法实现
  • 4.7 希尔(Shell)排序法
  • 4.7.1 算法描述
  • 4.7.2 算法实现
  • 4.8 合并排序法
  • 4.8.1 算法描述
  • 4.8.2 算法实现
  • 4.9 排序算法的选择
  • 4.9.1 选择基准
  • 4.9.2 各种排序算法的优缺点
  • 4.10 上机实践
  • 第5章 常用算法——查找
  • 5.1 查找的基本概念
  • 5.2 简单查找
  • 5.2.1 顺序查找
  • 5.2.2 折半查找
  • 5.3 二叉排序树
  • 5.3.1 二叉排序树的定义
  • 5.3.2 插入节点
  • 5.3.3 查找节点
  • 5.3.4 删除节点
  • 5.4 索引查找
  • 5.4.1 索引的概念
  • 5.4.2 索引查找算法
  • 5.5 散列表
  • 5.5.1 散列表概述
  • 5.5.2 构造散列函数
  • 5.5.3 处理冲突
  • 5.5.4 创建和查找散列表
  • 5.6 上机实践
  • 下篇 用数据结构解决实际问题
  • 第6章 数学问题
  • 6.1 有趣的整数
  • 6.1.1 完数
  • 6.1.2 亲密数
  • 6.1.3 水仙花数
  • 6.1.4 自守数
  • 6.1.5 最大公约数和最小公倍数
  • 6.2 素数
  • 6.2.1 求素数
  • 6.2.2 回文数
  • 6.2.3 哥德巴赫猜想
  • 6.3 阶乘
  • 6.3.1 用递归计算阶乘
  • 6.3.2 大数阶乘
  • 6.4 求 的近似值
  • 6.4.1 概率法
  • 6.4.2 割圆法
  • 6.4.3 公式法
  • 6.4.4 计算任意位数的
  • 6.5 方程求解
  • 6.5.1 高斯消元法解线性方程组
  • 6.5.2 二分法解非线性方程
  • 6.5.3 牛顿迭代法解非线性方程
  • 6.6 矩阵的运算
  • 6.6.1 矩阵加法和乘法运算
  • 6.6.2 多维矩阵转一维矩阵
  • 6.6.3 逆矩阵
  • 6.6.4 稀疏矩阵
  • 6.7 一元多项式的运算
  • 6.7.1 多项式加法
  • 6.7.2 多项式减法
  • 6.8 上机实践
  • 第7章 数据结构问题
  • 7.1 约瑟夫环
  • 7.2 大整数四则运算
  • 7.2.1 使用数组进行大整数运算
  • 7.2.2 使用链表进行大整数运算
  • 7.3 进制转换
  • 7.3.1 进制转换的分析
  • 7.3.2 进制转换实现代码
  • 7.4 括号匹配
  • 7.5 中序式转后序式
  • 7.5.1 后序表达式
  • 7.5.2 算法实现
  • 7.5.3 后序表达式求值
  • 7.6 停车场管理
  • 7.6.1 问题分析
  • 7.6.2 算法实现
  • 7.7 迷宫求解
  • 7.7.1 迷宫问题
  • 7.7.2 算法实现
  • 7.7.3 求迷宫所有路径
  • 7.8 LZW压缩的实现
  • 7.8.1 LZW的相关概念
  • 7.8.2 LZW压缩过程
  • 7.8.3 LZW压缩的实现
  • 7.8.4 LZW解压缩过程
  • 7.8.5 解压缩函数
  • 7.8.6 集成压缩和解压缩功能
  • 7.9 上机实践
  • 第8章 算法经典问题
  • 8.1 不定方程问题
  • 8.1.1 百钱买百鸡
  • 8.1.2 存钱利息最大化
  • 8.1.3 求阶梯数
  • 8.1.4 五家共井
  • 8.1.5 鸡兔同笼
  • 8.2 推算问题
  • 8.2.1 猴子吃桃
  • 8.2.2 舍罕王的赏赐
  • 8.3 魔术方阵
  • 8.3.1 简捷连续填数法
  • 8.3.2 双向翻转法
  • 8.3.3 井字调整法
  • 8.4 智力趣题
  • 8.4.1 汉诺塔
  • 8.4.2 背包问题
  • 8.4.3 马踏棋盘
  • 8.4.4 八皇后问题
  • 8.4.5 青蛙过河
  • 8.4.6 三色旗
  • 8.5 趣味游戏
  • 8.5.1 取石子游戏
  • 8.5.2 生命游戏
  • 8.5.3 洗扑克牌
  • 8.5.4 黑白棋
  • 8.5.5 凑24点游戏
  • 8.5.6 10点半游戏
  • 8.6 上机实践
  • 第9章 信息学奥赛试题精解
  • 9.1 NOIP普及组试题精解
  • 9.1.1 求级数之和
  • 9.1.2 求素数组合
  • 9.1.3 计算卒的路线
  • 9.1.4 检查校验码
  • 9.1.5 排座位
  • 9.1.6 击鼓传花
  • 9.1.7 绘制模拟立体图
  • 9.1.8 公路上的树
  • 9.1.9 采药
  • 9.1.10 求等价表达式
  • 9.1.11 不开心的龙龙
  • 9.1.12 孙悟空摘桃
  • 9.1.13 FBI树
  • 9.1.14 外星人的语言
  • 9.2 NOIP提高组试题精解
  • 9.2.1 砝码称重
  • 9.2.2 阿明的零花钱
  • 9.2.3 购买年货
  • 9.2.4 调整队形
  • 9.2.5 均分纸牌
  • 9.2.6 最小矩形面积
  • 9.2.7 低价买股票
  • 9.2.8 数字金字塔
  • 9.2.9 方格取数
  • 9.2.10 导弹防御系统
  • 9.3 上机实践
  • 第10章 常见面试题及解答
  • 10.1 数据结构类面试题
  • 10.1.1 选择题
  • 10.1.2 编程题
  • 10.2 经典算法类面试题
  • 附录 Dev-C++开发环境的使用
展开全部