数据结构算法与应用-c语言描述(清晰版)

下载

第一部分 预 备 知 识

第1章 C + +程序设计

大家好!现在我们将要开始一个穿越“数据结构、算法和程序”这个抽象世界的特殊旅程,

以解决现实生活中的许多难题。在程序开发过程中通常需要做到如下两点:一是高效地描述数

据;二是设计一个好的算法,该算法最终可用程序来实现。要想高效地描述数据,必须具备数

据结构领域的专门知识;而要想设计一个好的算法,则需要算法设计领域的专门知识。

在着手研究数据结构和算法设计方法之前,需要你能够熟练地运用 C + +编程并分析程序,

这些基本的技能通常是从 C + +课程以及其他分散的课程中学到的。本书的前两章旨在帮助你回

顾一下这些技能,其中的许多内容你可能已经很熟悉了。

本章我们将回顾C++ 的一些特性。因为不是针对C++ 新手,因此没有介绍诸如赋值语句、

if 语句和循环语句(如 for 和w h i l e )等基本结构,而是主要介绍一些可能已经被你忽略的 C + +

特性:

• 参数传递方式(如传值、引用和常量引用)。

• 函数返回方式(如返值、引用和常量引用)。

• 模板函数。

• 递归函数。

• 常量函数。

• 内存分配和释放函数:n e w与d e l e t e 。

• 异常处理结构:t r y, c a t c h和t h r o w 。

• 类与模板类。

• 类的共享成员、保护成员和私有成员。

• 友元。

• 操作符重载。

本章中没有涉及的其他 C + +特性将在后续章节中在需要的时候加以介绍。本章还给出了如

下应用程序的代码:

• 一维和二维数组的动态分配与释放。

• 求解二次方程。

• 生成n 个元素的所有排列方式。

• 寻找n个元素中的最大值。

此外,本章还给出了如何测试和调试程序的一些技巧。

1.1 引言

在检查程序的时候我们应该问一问:

• 它正确吗?

2 第一部分 预 备 知 识

下载

• 它容易读懂吗?

• 它有完善的文档吗?

• 它容易修改吗?

• 它在运行时需要多大内存?

• 它的运行时间有多长?

• 它的通用性如何?能不能不加修改就可以用它来解决更大范围的问题?

• 它可以在多种机器上编译和运行吗?或者说需要经过修改才能在不同的机器上运行吗?

上述问题的相对重要性取决于具体的应用环境。比如,如果我们正在编写一个只需运行一

次即可丢弃的程序,那么主要关心的应是程序的正确性、内存需求、运行时间以及能否在一台

机器上编译和运行。不管具体的应用环境是什么,正确性总是程序的一个最重要的特性。一个

不正确的程序,不管它有多快、有多么好的通用性、有多么完善的文档,都是毫无意义的(除

非它变正确了)。尽管我们无法详细地介绍提高程序正确性的技术,但可以为大家提供一些程

序正确性的验证方法以及公认的一些良好的程序设计习惯,它们可以帮助你编写正确的代码。

我们的目标是教会你如何开发正确的、精致的、高效的程序。

1.2 函数与参数

1.2.1 传值参数

考察函数A b c (见程序1 - 1)。该函数用来计算表达式 a+b+b*c+ (a+b-c) / (a+b) + 4 ,其中a ,b

和c 是整数,结果也是一个整数。

程序1-1 计算一个整数表达式

int Abc(int a, int b, int c)

{

return a+b+b*c+(a+b-c)/(a+b)+4;

}

在程序 1 - 1中,a ,b和c 是函数Abc 的形式参数(formal parameter ),类型均为整型。如果

在如下语句中调用函数A b c :

z = Abc(2,x,y)

那么,2 ,x 和y 分别是对应于a ,b 和c 的实际参数(actual parameter )。当A b c ( 2 ,x ,y ) 被执

行时,a 被赋值为2 ;b 被赋值为x ;c 被赋值为y 。如果x 和 / 或y

数据结构算法与应用c++语言描述 pdf +源代码,数据结构算法与应用-c++语言描述(清晰版).pdf...相关推荐

  1. c语言memcpy函数源代码,memcpy函数-memcpy函数,C语言

    本教程分享:<memcpy函数>, memcpy是memorycopy的缩写,意为内存复制,在写C语言程序的时候,我们常常会用到它.它的函原型如下:. void * memcpy ; .如 ...

  2. PDF不能复制或编辑:用Adobe acrobat将扫描版PDF转换为可编辑版本

    问题描述 PDF文档很清晰,但内容是按块组织的,因此没法进行复制文本等操作. 工具和方法 Adobe Acrobat Pro DC 方法: "扫描和OCR"-"识别文本& ...

  3. 2010年计算机考研选择题解析,2009-2010计算机考研真题及答案(含选择题解析)WORD高清晰版.pdf...

    2009 年统考计算机考研真题 1 一. 单项选择题,每小题 2 分,共 80 分. 1 二. 综合应用题.共 70 分. 5 2009 年计算机统考真题参考答案 8 一. 选择题 8 二. 综合应用 ...

  4. c语言atof函数源代码,strtod ( ) 和 atof ( )【C语言库函数源代码】

    [C语言库函数源代码] [本程序在Dev C++ 4.9.9.2 下编译通过] /* 这个函数是把浮点数字符串转换为浮点数的函数. 函数将会跳过字符串中的空格字符和不是'+'.'-'.'.'. 数字的 ...

  5. pdf会签_设备验收管理办法20140604(会签签批版).pdf

    设备验收管理办法20140604(会签签批版)设备验收管理办法20140604(会签签批版) 河北御捷车业有限公司 ZY/ZL-01 设备验收管理办法 共 9 页 版本:A 编制 审核 批准 发文号: ...

  6. 前端《Vue.js从入门到项目实战》PDF课件+《微信小程序实战入门第2版》PDF代码调试

    JS进行开发,正如一切的编程语言都立足于电元信号的正负极,即01码,可为什么软件都不采用二进制编码来 进行开发呢?这里面牵扯到一个成本的问题,这正是影响项目领导者进行决策的关键因素.Vue项目与原生J ...

  7. 让Kindle支持扫描版PDF重排

    使用小屏幕Kindle阅读PDF文档时,如果文档不是专门为小屏幕阅读器排版,就会经常出现显示字体太小的情况,造成阅读不便.而Kindle的屏幕刷新率又太低,页面局部放大后再移动阅读区域亦不现实.解决这 ...

  8. 亲测好用的caj文件转换成带目录的文字版PDF文件工具

    参考GitHub上caj2pdf/caj2pdf: Convert CAJ (China Academic Journals) files to PDF. 转换中国知网 CAJ 格式文献为 PDF.佛 ...

  9. vue导出横版pdf并解决内容分割问题

    准备工作和vue导出PDF一样,接下来讲的是一些区别 首先是div中 div中将要导出的div层添加ref,相关子内容标签加上 class="item" 为了后续内容分割处理 &l ...

  10. 数据结构与算法分析:C语言描述(原书第2版 简体中文版!!!) PDF+源代码+习题答案...

    转自:http://www.linuxidc.com/Linux/2014-04/99735.htm 数据结构与算法分析:C语言描述(原书第2版中文版!!!) PDF+源代码+习题答案 数据结构与算法 ...

最新文章

  1. Python ModuleNotFoundError: No module named ‘xlrd‘
  2. html5表单实例元素,HTML5新表单元素的图文实例-
  3. count 有条件 mysql_【笔记】Mysql中使用count加条件统计
  4. maven项目 ant_将大型项目从Ant迁移到Maven
  5. node.js当中net模块的简单应用(基于控制台的点对点通信)
  6. 构建Electron的常见问题(Mac)
  7. ATS连接 https
  8. mysql 语句中last_Mysql函数:Last_insert_id()语法讲解
  9. 30 | 答疑文章(二):用动态的观点看加锁
  10. CCNP系列三十四--- Bgp的本地优先属性
  11. 什么软件可以搜C语言题答案,C语言题库(带答案)-排版Word版
  12. spring与jdk版本要求
  13. 【转载】士兵突击 经典语录
  14. 中国科学院全国名词委组合数学和计算机科学研究开发中心 顾同新,有关组合数学家陆家羲的几点史实澄清.doc...
  15. NET F/T六维力传感器使用
  16. 网络无法访问互联网是什么原因
  17. ddos源码 ntp_DDOS攻击之NTP放大攻击
  18. web版Project简介
  19. 软件测试好学吗 有哪些好的学习建议
  20. MVC框架运行流程和目录结构

热门文章

  1. Doom启示录(一)---李乃峰所崇拜之 两个约翰!
  2. vue.js下载教程
  3. 免费画图软件推荐 - draw.io
  4. ASM 转自三思笔记
  5. PMP考前资料分享!另送160+项目管理表格模板~
  6. 转:五大常用算法——贪心算法详解及经典例子
  7. 爬虫python代码网易云_Python爬虫之网易云音乐下载
  8. Java实现的各种排序算法
  9. 《CSS权威指南》第3版
  10. Python 之 字典(dict)的创建、字典生成式、复制添加更新删除、查询遍历比较等