第一章:绪论
程序设计的实质:数据表示和数据处理。
数据表示:能够储存在计算机的内存的这项任务。
数据处理:一个实际问题的求解必须满足各项处理要求的这项任务。
1.1数据结构在程序设计中的作用
程序设计的一般过程:
1.2 本书讨论的主要内容
非数值问题的数据组织和处理:
(1)数据的逻辑结构:线性表、树、图等数据结构,其核心是如何组织待处理的数据结构以及数据之间的关系。
(2)数据的存储结构:如何将线性表、树、图等数据结构存储到计算机的存储器中,其核心是如何有效的存储数据以及数据之间的逻辑关系。
(3)算法:如何基于数据的某种存储结构实现插入、删除、查找等基本操作,其核心是如何有效地3处理数据。
(4)常用 数据处理技术:包括查找技术排序技术、索引技术等。
1.3数据结构的基本概念
数据:是信息的载体,在计算机科学中是指所有能输入到计算机中并能被计算机程序识别和处理的符号集合。
数据可以分为两大类:一类是整数、实数等数值数据;一类是文字、声音、图形和图像等非数值数据。(在计算机中,图形和图像是两个不同的概念,图像由计算机产生,图像时真实的场景或图片输入计算机的。)
数据元素:数据的基本单位,在算计机程序中通常作为一个整体进行考虑和处理。
数据项:构成数据元素的不可分割的最小的单位。
数据元素具有广泛的含义,一般来说,能独立的、完整的描述问题世界的一切实体都是数据元素。
数据结构:指相互之间存在一定关系的数据元素的集合。
数据元素师讨论数据结构时涉及的最小数据单位,其中的数据项一般不予考虑。按照视点的不同,数据架构分为逻辑结构和存储结构。
数据的逻辑结构:数据元素之间逻辑关系的整体。数据的逻辑结构在形式上可以定义为一个二元组。
根据数据元素之间逻辑关系的不同,数据分为以下四类:
(1)线性结构:数据元素之间存在着一对一的线性关系。
(2)集合 :数据元素之间就是“属于同一个集合”,除此之外,没有任何关系。
(3)树结构:数据元素之间存在着一对多的层次关系。
(4)图结构;数据元素之间存在着多对多的任意关系。
树结构和图结构也称为非线性结构。
数据的逻辑结构常用逻辑图来描述,其描述方法是:将每一个数据元素看做一个结点,用圆圈表示,元素之间的逻辑关系用结点之间的连线表示,如果强调关系的方向性,则用带箭头的连线表示关系。
1.4算法及算法分析算法是对特定问题求解步骤的一种描述,是指令的有限序列。
算法的5个重要特性:
1、输入
2、输出
3、有穷性
4、确定性
5、可行性
程序:是对一个算法使用某种程序设计语言的具体实现,原则上,算法可以用任何一种程序设计语言实现。(操作系统是一个在无限循环中执行的程序而不是一个算法)
“好”算法的五大特性:
1、正确性
2、鲁棒性(健壮性)
3、简单性
4、抽象分级
5、高效性
算法的描述方法:
1、自然语言:优点是容易理解,缺点是容易出现二义性,并且算法通常都很亢长。
2、流程图:优点是直观易懂,缺点是严密性不如程序设计语言。灵活性不如自然语言。
3、程序设计语言
4、伪代码:不是一种视觉的编程语言,但在表达能力上类似于编程语言,同时极小化了描述算法的不必要的技术细节,是比较合适的描述算法的方法,被称为“算法语言”或“第一语言”。