Chapter1 线性表 1
1-1 顺序表示的线性表——顺序表 1
001 合并两个线性表中的元素 6
002 fgetc函数和getc函数 9
003 求两个线性表的差集 12
004 分拆顺序表:左边的元素小于等于0,右边的大于0 14
005 计算两个任何长度的整数之和 17
1-2 链式表示的线性表之一——单链表 19
006 求单链表的差集 27
007 合并两个单链表 32
1-3 链式表示的线性表之二——循环单链表 36
008 分拆循环单链表 36
009 构造三个单循环链表 40
1-4 链式表示的线性表之三——双向链表 44
010 双向链表的建立与插入操作 47
011 约瑟夫问题(双向链表) 51
Chapter2 栈 55
2-1 顺序表示的栈——顺序栈 55
001 入栈和出栈 58
002 共享栈的入栈和出栈操作 60
003 求C(n,m)的值 65
2-2 链式表示的栈——链式栈 69
004 进制转换 73
005 括号匹配 75
006 求算术表达式的值 79
007 判断字符串是否中心对称 87
Chapter3 队列 91
3-1 顺序表示的队列——顺序队列 91
001 入队和出队 96
002 舞伴配对 100
003 轮渡管理 103
3-2 链式表示的队列——链式队列 107
004 队列在杨辉三角中的应用 111
005 判断是否为回文 114
Chapter4 串 119
4-1 顺序表示的串——顺序串 119
001 串的基本操作 125
002 将浮点型数转换为对应的字符串 130
003 求最长公共子串 132
004 求等值子串 135
4-2 串的模式匹配 137
005 模式匹配 143
Chapter5 数组 149
5-1 数组的定义及表示 149
001 查找第k小元素 151
002 将奇数移动到偶数的左边 153
5-2 二维数组(矩阵) 155
003 将矩阵旋转90度 155
004 打印魔方阵 157
005 打印螺旋矩阵 160
006 打印拉丁方阵 162
007 打印蛇形方阵 164
5-3 数组的压缩存储 166
008 上三角阵的压缩存储 169
5-4 稀疏矩阵的压缩存储 172
009 稀疏矩阵的相加 176
Chapter6 广义表 181
6-1 广义表的定义及头尾链表表示 181
001 创建广义表 183
6-2 广义表的扩展线性链表表示 190
002 创建广义表并求其深度和广度 191
Chapter7 树 197
7-1 树与二叉树 197
001 根据广义表形式创建二叉树 207
002 建立二叉树 211
7-2 二叉树的遍历 214
003 先序非递归遍历二叉树 215
004 层次遍历二叉树 219
005 输出树的各条边 221
006 由中序和后序序列构造二叉树 225
7-3 二叉树的应用 229
007 交换二叉树的左右子树 229
008 判断是否为完全二叉树 233
009 求结点的个数 239
010 求二叉树的高度和宽度 242
011 求根结点到任一结点之间的路径 246
7-4 哈夫曼树 251
012 构造哈夫曼树 253
Chapter8 图 259
8-1 图的基本概念 259
001 用邻接矩阵表示法创建有向图 264
002 利用邻接表创建有向图 267
003 把邻接矩阵转换为邻接表 271
8-2 图的遍历 276
004 判断有向图中是否存在回路 278
005 深度遍历有向图 281
006 图的广度优先遍历 286
007 判断有向图中是否有根 291
008 求距离顶点v0的最短长度为k的所有顶点 296
009 判断顶点u和顶点v是否存在简单路径 301
010 判断图中是否为一棵树 307
Chapter9 排序算法 313
9-1 插入排序 313
001 直接插入排序 313
002 折半插入排序 316
003 希尔排序 321
9-2 交换排序 324
004 冒泡排序 324
005 快速排序 328
9-3 选择排序 333
006 简单选择排序 333
007 堆排序 338
9-4 归并排序 345
008 归并排序 345
9-5 基数排序 348
009 基数排序 348
Chapter10 查找算法 357
10-1 基于线性表的查找 357
001 顺序查找 357
002 折半查找 359
003 分块查找 363
10-2 基于树的查找 367
004 二叉排序树的创建和插入操作 367
10-3 哈希表的查找 372
005 哈希表的构造与查找 372
Chapter11 递推算法 379
11-1 顺推法 379
001 斐波那契数列(递推法) 379
002 将十进制数转换为二进制数 382
003 母牛生小牛问题 384
004 杨辉三角 386
11-2 逆推法 388
005 猴子摘桃 388
006 该存多少钱 389
Chapter12 迭代算法 391
12-1 精确迭代法 391
001 最大公约数与最小公倍数 391
002 十进制整数转换为二进制整数 393
003 质因数的分解 394
004 角谷猜想 395
12-2 近似迭代法 397
005 求一个数的平方根 397
006 二分法 398
007 牛顿迭代法 401
008 求定积分 404
Chapter13 递归算法 409
13-1 简单递归 409
001 求n的阶乘 409
002 斐波那契数列(递归法) 413
003 求n个数中的最大者 415
004 数制转换 416
005 求最大公约数 417
13-2 复杂递归 419
006 颠倒字符串 419
007 和式分解 420
008 台阶问题 423
009 汉诺塔问题 426
010 大牛生小牛问题 429
Chapter14 枚举算法 431
001 判断n是否能被3、5、7整除 431
002 百钱买百鸡 434
003 五猴分桃 436
004 打印水仙花数 439
005 填数游戏 440
006 谁在说谎 442
Chapter15 贪心算法 445
001 找零钱问题 445
002 哈夫曼编码 448
003 加油站问题 454
Chapter16 回溯算法 457
001 组合问题 457
002 填字游戏 460
003 装箱问题 466
Chapter17 实用算法 471
001 大小写金额转换 471
002 计算7的34次方 476
003 一年中的第几天 478
004 求算术表达式的值 481
005 一元多项式的乘法 489
006 大整数乘法 496
附录 程序调试 499
参考文献 514