第1章 程序设计概述 1
1.1程序设计语言和算法 1
1.1.1程序设计语言 1
1.1.2算法的概念 1
1.1.3算法的表示方法 3
1.2程序设计的步骤和方法 7
1.2.1编写程序解决问题的一个例子 7
1.2.2程序设计的步骤 10
1.2.3结构化程序设计方法简介 14
第2章 程序控制结构 21
2.1选择结构 21
2.1.1选择语句 21
2.1.2选择结构程序设计 23
2.2循环结构 29
2.2.1循环语句 29
2.2.2循环结构程序设计 30
2.3递推和迭代 42
2.3.1递推 43
2.3.2迭代 53
2.3.3递推和迭代的比较 60
2.4穷举法 64
2.4.1穷举法的基本思想 64
2.4.2逻辑推理 68
2.4.3数学趣题 72
第3章 数组和结构体 83
3.1概述 83
3.1.1数组概述 83
3.1.2结构体概述 89
3.2数组的变换 91
3.2.1逆置 91
3.2.2循环移位 93
3.2.3顺序调整 97
3.3排序和查找 103
3.3.1排序 103
3.3.2查找 106
3.4方阵 115
3.4.1魔方阵 115
3.4.2蛇形方阵 125
3.4.3回旋方阵 129
3.4.4折叠方阵 134
3.4.5对称方阵 137
3.4.6上/下三角阵 140
3.5顺序表 144
3.5.1插入操作 144
3.5.2删除操作 146
3.5.3表的合并与拆分 153
3.6数组的应用 158
第4章 函数 169
4.1函数的定义及使用 169
4.1.1概述 169
4.1.2函数的应用 170
4.2递归 197
4.2.1递归概述 197
4.2.2递归的应用 203
第5章 指针 215
5.1指针的定义与使用 215
5.1.1指针概述 215
5.1.2指针的使用 216
5.2链表 233
5.2.1链表的建立和输出 233
5.2.2插入和删除操作 236
5.2.3链表的遍历 240
5.2.4链表的合并与拆分 246
5.2.5链表的应用 255
5.3二叉树 260
5.3.1二叉树的建立 261
5.3.2二叉树的遍历 265
第6章 程序设计中的算法 282
6.1回溯法 282
6.1.1回溯法的基本思想 282
6.1.2回溯法的应用 284
6.2分治法 300
6.2.1分治法的基本思想 300
6.2.2分治法的应用 303
6.3贪心法 322
6.3.1贪心法的基本思想 322
6.3.2贪心法的应用 325
6.4动态规划 341
6.4.1动态规划的基本思想 341
6.4.2动态规划的应用 348
第7章 实践出真知 361
7.1无他,唯手熟耳 361
7.2连营 367
7.2.1字符图案 368
7.2.2字符串中的空格 371
7.2.3自我数 376
7.2.4错排问题 380
7.2.5排列与组合 385
7.3集智 394
7.4巧变 407
7.4.1位运算 407
7.4.2哈希表 414
7.4.3花朵数 418
7.5 Online Judge 426
7.5.1 PKU JudgeOnline 427
7.5.2 PKU JudgeOnline典型题目解析 430
实例索引表 445
参考文献 448