《妙趣横生的算法(C语言实现)》理论与实践相结合,旨在帮助读者理解算法,并提高C语言编程能力,培养读者的编程兴趣,并巩固已有的C语言知识。全书分为2个部分共10章,内容涵盖了编程必备的基础知识(如数据结构、常用算法等),编程实例介绍,常见算法和数据结构面试题等。《妙趣横生的算法(C语言实现)》最大的特色在于实例丰富,题材新颖有趣,实用性强,理论寓于实践之中。通过《妙趣横生的算法(C语言实现)》的学习,可以使读者开阔眼界,提高编程的兴趣,提高读者的编程能力和应试能力。
《妙趣横生的算法(C语言实现)》附带1张光盘,内容为《妙趣横生的算法(C语言实现)》源代码和作者为《妙趣横生的算法(C语言实现)》录制的5.5小时多媒体教学视频。《妙趣横生的算法(C语言实现)》可作为算法入门人员的教程,也可以作为学习过C语言程序设计的人士继续深造的理想读物,也可作为具有一定经验的程序设计人员巩固和提高编程水平,查阅相关算法实现和数据结构知识的参考资料,同时也为那些准备参加与算法和数据结构相关的面试的读者提供一些有益的帮助。
目录
- 第1部分 基础篇
- 第1章 数据结构基础
- 1.1 什么是数据结构
- 1.2 顺序表
- 1.2.1 顺序表的定义
- 1.2.2 向顺序表中插入元素
- 1.2.3 从顺序表中删除元素
- 1.2.4 实例与分析
- 1.3 链表
- 1.3.1 创建一个链表
- 1.3.2 向链表中插入结点
- 1.3.3 从链表中删除结点
- 1.3.4 销毁一个链表
- 1.3.5 实例与分析
- 1.4 栈
- 1.4.1 栈的定义
- 1.4.2 创建一个栈
- 1.4.3 入栈操作
- 1.4.4 出栈操作
- 1.4.5 栈的其他操作
- 1.4.实例与分析
- 1.5 队列
- 1.5.1 队列的定义
- 1.5.2 创建一个队列
- 1.5.3 入队列操作
- 1.5.4 出队列操作
- 1.5.5 销毁一个队列
- 1.5.6 循环队列的概念
- 1.5.7 循环队列的实现
- 1.5.8 实例与分析
- 1.6 树结构
- 1.6.1 树的概念
- 1.6.2 树结构的计算机存储形式
- 1.6.3 二叉树的定义
- 1.6.4.二叉树的遍历
- 1.6.5 创建二叉树
- 1.6.6 实例与分析
- 1.7 图结构
- 1.7.1 图的概念
- 1.7.2 图的存储形式
- 1.7.3 邻接表的定义
- 1.7.4.图的创建
- 1.7.5 图的遍历(1)——深度优先搜索
- 1.7.6 图的遍历(2)——广度优先搜索
- 1.7.7 实例与分析
- 第2章 常用的查找与排序方法
- 2.1 顺序查找
- 2.2 折半查找
- 2.3 排序的概述
- 2.4 直接插入排序
- 2.5 选择排序
- 2.6 冒泡排序
- 2.7 希尔排序
- 2.8 快速排序
- 第3章 常用的算法思想
- 3.1 什么是算法
- 3.2 算法的分类表示及测评
- 3.2.1 算法的分类
- 3.2.2 算法的表示
- 3.2.3 算法性能的测评
- 3.3 穷举法思想
- 3.3.1 基本概念
- 3.3.2 寻找给定区间的素数
- 3.3.3 TOM的借书方案
- 3.4 递归与分治思想
- 3.4..1 基本概念
- 3.4.2 计算整数的划分数
- 3.4.3 递归的折半查找算法
- 3.5 贪心算法思想
- 3.5.1 基本概念
- 3.5.2 最优装船问题
- 3.6 回溯法
- 3.6.1 基本概念
- 3.6.2 四皇后问题求解
- 3.7 数值概率算法
- 3.7.1 基本概念
- 3.7.2 计算定积分
- 第2部分 编程实例解析
- 第4章 编程基本功
- 4.1 字符类型统计器
- 4.2 计算字符的ASCII码
- 4.3 嵌套if.else语句的妙用
- 4.4 基于switch语句的译码器
- 4.5 判断闰年
- 4.6 指针变量作参数
- 4.7 矩阵的转置运算
- 4.8 矩阵的乘法运算
- 4.9 巧用位运算
- 4.10 文件的读写
- 4.11 计算文件的大小
- 4.12 记录程序的运行时间
- 4.13 十进制/二进制转化器
- 4.14 打印特殊图案
- 4.15 打印杨辉三角
- 4.16 复杂级数的前n项和
- 4.17 寻找矩阵中的“鞍点”
- 4.18 n阶勒让德多项式求解
- 4.19 递归反向输出字符串
- 4.20 一年中的第几天
- 第5章 数学趣题(一)
- 5.1 舍罕王的失算
- 5.2 求两个数的最大公约数和最小公倍数
- 5.3 歌德巴赫猜想的近似证明
- 5.4 三色球问题
- 5.5 百钱买百鸡问题
- 5.6 判断回文数字
- 5.7 填数字游戏求解
- 5.8 新郎和新娘
- 5.9 爱因斯坦的阶梯问题
- 5.10 寻找水仙花数
- 5.11 猴子吃桃问题
- 5.12 兔子产仔问题
- 5.13 分解质因数
- 5.14 常胜将军
- 5.15 求兀的近似值
- 5.16 魔幻方阵
- 5.17 移数字游戏
- 5.18 数字的全排列
- 5.19 完全数
- 5.20 亲密数
- 5.21 数字翻译器
- 5.22 递归实现数制转换
- 5.23 谁在说谎
- 第6章 数学趣题(二)
- 6.1 连续整数固定和问题
- 6.2 表示成两个数的平方和
- 6.3 具有特殊性质的数
- 6.4 验证角谷猜想
- 6.5 验证四方定理
- 6.6 递归法寻找最小值
- 6.7 寻找同构数
- 6.8 验证尼科彻斯定理
- 6.9 三重回文数字
- 6.10 马克思手稿中的数学题
- 6.11 渔夫捕鱼问题
- 6.12 寻找假币
- 6.13 计算组合数
- 6.14 递归法求幂
- 6.15 汉诺Hanoi塔
- 6.16 选美比赛
- 第7章 数据结构趣题
- 7.1 顺序表的就地逆置
- 7.2 动态数列排序
- 7.3 在原表空间进行链表的归并
- 7.4 约瑟夫环
- 7.5 二进制/八进制转换器
- 7.6 回文字符串的判定
- 7.7 括号匹配
- 7.8 魔王语言翻译
- 7.9 动态双向链表的应用
- 7.10 判断完全二叉树
- 7.11 动画模拟创建二叉树
- 7.12 打印符号三角形
- 7.13 递归函数的非递归求解
- 7.14 任意长度整数加法
- 第8章 数值计算问题
- 8.1 递推化梯形法求解定积分
- 8.2 求解低阶定积分
- 8.3 迭代法开平方运算
- 8.4 牛顿法解方程
- 8.5 欧拉方法求解微分方程
- 8.6 改进的欧拉方法求解微分方程
- 8.7 雅可比迭代公式求解线性方程组
- 第9章 综合题
- 9.1 破碎的砝码
- 9.2 计算24的问题
- 9.3 马踏棋盘
- 9.4 0-1背包问题
- 9.5 八皇后问题求解
- 9.6 简易文件加密/解密系统
- 第10章 算法设计与数据结构面试题精粹
- 10.1 常见的算法设计题
-
10.2 常见的数据结构题