C/C++常用算法手册
2011-5
中国铁道出版社
秦姣华,向旭宇 著
406
无
计算机技术的发展和普及不仅改变了人们的生活和娱乐方式,也改变了人们的工作方式,这其中最为重要的便是计算机编程技术。现代的设计任务大多通过代码编程交给计算机来完成,其中算法起到了至关重要的作用。可以毫不夸张地说,算法是一切程序设计的灵魂和基础。《C/C++常用算法手册》分3篇,共13章,“第1篇算法基础篇”介绍了算法概述,重点分析了数据结构和基本算法思想;“第2篇算法基本应用篇”详细讲解了算法在排序、查找、数值计算、数论、经典趣题和游戏中的应用;“第3篇算法高级应用篇”讲解了算法的一些高级应用技术,包括在密码学和数据压缩/解压缩中的应用。《C/C++常用算法手册》知识点覆盖全面、结构安排紧凑、讲解详细、示例丰富。全书对每一个知识点都给出了相应的算法及应用示例。虽然这些例子都是以c语言来编写的,但是算法并不局限于c语言。如果读者采用其他编程语言,例如c++、c撑、VB、Java等,根据其语法格式进行适当的修改即可。 《C/C++常用算法手册》主要定位于有一定c/c++语言编程基础、想通过学习算法与数据结构提升编程水平的读者,也可作为具有一定编程经验的程序员以及大中专院校学生学习数据结构和算法的参考书。
第1篇 算法基础篇第1章 算法概述1.1 什么是算法1.2 算法的发展历史1.3算法的分类1.4 算法相关概念的区别1.5 算法的表示1.5.1 自然语言表示1.5.2 流程图表示1.5.3 N.S图表示1.5.4 伪代码表示1.6 算法的性能评价1.7 算法实例1.7.1 查找数字1.7.2 创建项目1.7.3 编译执行1.8 算法的新进展1.9 小结第2章 数据结构2.1 数据结构概述2.1.1 什么是数据结构2.1.2数据结构中的基本概念2.1.3数据结构的内容2.1.4 数据结构的分类2.1.5 数据结构的几种存储方式2.1.6 数据类型2.1.7 常用的数据结构2.1.8 选择合适的数据结构解决实际问题2.2 线性表2.2.1 什么是线性表2.2.2 线性表的基本运算2.3 顺序表结构2.3.1 准备数据2.3.2 初始化顺序表2.3.3 计算顺序表长度2.3.4 插入结点2.3.5 追加结点2.3.6 删除结点2.3.7 查找结点2.3.8 显示所有结点2.3.9 顺序表操作示例2.4 链表结构2.4.1 什么是链表结构2.4.2 准备数据2.4.3 追加结点2.4.4 插入头结点2.4.5 查找结点2.4.6 插入结点2.4.7 删除结点2.4.8 计算链表长度2.4.9 显示所有结点2.4.10 链表操作示例2.5 栈结构2.5.1 什么是栈结构2.5.2 准备数据2.5.3 初始化栈结构2.5.4 判断空栈2.5.5 判断满栈2.5.6 清空栈2.5.7 释放空间2.5.8 入栈2.5.9 出栈2.5.1 0读结点数据2.5.1 1栈结构操作示例2.6 队列结构2.6.1 什么是队列结构2.6.2 准备数据2.6.3初始化队列结构2.6.4.判断空队列2.6.5 判断满队列2.6.6 清空队列2.6.7 释放空间2.6.8 入队列2.6.9 出队列2.6.10 读结点数据2.6.11 计算队列长度2.6.12 队列结构操作示例2.7 树结构2.7.1 什么是树结构2.7.2 树的基本概念2.7.3 二叉树2.7.4 准备数据2.7.5 初始化二叉树2.7.6 添加结点2.7.7 查找结点2.7.8 获取左子树2.7.9 获取右子树2.7.10 判断空树2.7.11 计算二叉树深度2.7.12 清空二叉树2.7.13 显示结点数据2.7.14 遍历二叉树2.7.15 树结构操作示例2.8 图结构2.8.1 什么是图结构2.8.2 图的基本概念2.8.3 准备数据2.8.4 创建图2.8.5 清空图2.8.6 显示图2.8.7 遍历图2.8.8 图结构操作示例2.9 小结第3章 基本算法思想3.1 常用算法思想概述3.2 穷举算法思想3.2.1 穷举算法基本思想3.2.2 穷举算法示例3.3 递推算法思想3.3.1 递推算法基本思想3.3.2 递推算法示例3.4 递归算法思想3.4.1 递归算法基本思想3.4.2 递归算法示例3.5 分治算法思想3.5.1 分治算法基本思想3.5.2 分治算法示例3.6 概率算法思想3.6.1 概率算法基本思想3.6.2 概率算法示例3.7 小结第2篇 算法基本应用篇第4章 排序算法4.1 排序算法概述4.2 冒泡排序法4.2.1 冒泡排序算法4.2.2 冒泡排序算法示例4.3 选择排序法4.3.1 选择排序算法4.3.2 选择排序算法示例4.4 插入排序法4.4.1 插入排序算法……第5章 查找算法第7章 复杂的数值计算算法第8章 经典数据结构问题第9章 数论问题第10章 算法经典趣题第11章 游戏中的算法第3篇 算法高级应用篇第12章 密码学算法第13章 压缩与解压缩算法
虽然业界没有一个统一的定义,但是这些定义都是具有相同的含义。我们在这里不再追究数据结构的确切定义,只需要了解数据结构的基本含义,并能够使用其解决问题即可。我们可以这样简单地理解数据结构,一个数据结构是由数据元素依据某种逻辑联系组织起来的,对数据元素问逻辑关系的描述称为数据的逻辑结构。由于数据必须在计算机内存储,数据的存储结构是其在计算机内的表示,也就是数据结构的实现形式。另外,讨论一个数据结构,必须涉及在该类数据上执行的运算。 数据结构是一切算法的基础,而且不仅仅如此,数据结构可以说是程序设计语言的基础。正是由于对数据结构的深入理解,才导致多种多样的程序设计语言的诞生,例如Java、C++、C≠}等。其中,面向对象的程序设计语言就是完善处理对象类型数据结构的范例,这在某些方面可以方便地描述和解决实际问题。 2.1.2 数据结构中的基本概念 深入了解数据结构之前,我们需要简单掌握一下数据结构中涉及的一些基本概念,主要包括如下几个。 数据(Data):数据是信息的载体,能够被计算机识别、存储和加工处理,是计算机程序加工的“原材料”。数据包括的类型是非常广泛的,例如基本的整数、字符、字符串、实数等。此外,图像和声音等也都可以认为是一种数据。 数据元素(DataElement):数据元素是数据的基本单位,也称为元素、结点、顶点、记录等。一般来说,一个数据元素可以由若干个数据项组成,数据项是具有独立含义的最小标识单位。数据项也可称为字段、域、属性等。数据结构(:DataStructure):数据结构指的是数据之间的相互关系,也就是数据的组织形式。这是本章所要讨论的主要内容。
《C/C++常用算法手册》计算机程序设计语言林林总总,程序设计的应用领域和应用方向也各不相同。但是不管采用什么程序设计语言,不管是应用在嵌入式底层开发、WEB应用开发、或者MIS系统开发……代码中所采用的算法,决定了你所编写程序的运行效率,代码的简洁程度,甚至是可维护性。 毫不夸张地说,算法是整个程序设计的核心,算法是一切程序设计的灵魂和基础。选择合理的算法,可以起到事半功倍的效果。对于程序开发者来说,学习和掌握算法成为最重要的基本功。 不过,一般的算法和数据结构类图书,多从理论角度编写,读者在学习的过程中会感到枯燥和吃力,往往学习一段时间后便丧失了兴趣。《C/C++常用算法手册》以一些有趣有用的实例为主,以实际可行的代码为讲解方式,可大大提升读者的学习兴趣,有效辅助读者深入全面地掌握算法的意义和一些程序设计中必须掌握的、可参考使用的经典算法。 增值服务一本真正的好书要为读者在书本之外搭建起一条提升能力的阶梯;为了让《C/C++常用算法手册》更加完善,读者在学习《C/C++常用算法手册》的过程中如果发现有不明白的地方或者有更好的算法和其他建议,和我们交流,相互学习和共同提升。另外。读者还可以到《C/C++常用算法手册》专有的读者服务网站:上交流学习心得、阅读相关技术和了解在实际工作中可能会用到的其他算法技术资料。该资料内容至少有600页。同时,我们还会在这个网站上提供辅助视频教学服务,供读者下载或者在线学习。 算法是一切程序设计的基础和灵魂,更是一位程序员水平高低的集中体现。 涵盖广泛,精炼的理论讲述搭配大量经典算法示例,学习查询兼而有之。 阐述到位,算法思想、算法实现和完整示例合理搭配,相辅相成。 示例完善,图示例分析精准,代码注释精确,每段代码皆可通过编译执行。
无