第1章绪论
程序设计的实质:将数据存储在计算机的内存中,这项任务称为数据表示;处理数据、设计方案(算法)称为数据处理。
1.1数据结构在程序设计中的作用
数据结构问题起源于程序设计,计算机不能分析问题并产生问题的解决方案,必须由人分析问题,确定问题的解决方案、编写程序,然后让计算机执行程序最终获得问题的解。
沃思的著名公式:数据结构+算法=程序
1.2本书讨论的主要内容
计算机能够求解的问题一般可以分为数值问题和非数值问题。本书讨论非数值问题的数据组织和处理,主要内容有如下四点。
(1)数据的逻辑结构:线性表、树、图等数据结构,其核心是如何组织待处理的数据以及数据之间的关系。
(2)数据的存储结构:如何将线性表、树、图等数据结构存储到计算机的存储器中,其核心是如何有效地存储数据以及数据之间的逻辑关系。
(3)算法:如何基于数据的某种存储结构实现插入、删除、查找等基本操作,其核心是如何有效地处理数据。
(4)常用数据处理技术:包括查找技术、排序技术、索引技术等。
1.3数据结构的基本概念
数据表示分为数据的逻辑结构(集合、线性结构、树结构、图结构)与数据的存储结构(顺序存储、链式存储)。
数据的操作:插入、删除、修改、检索、排序等。
1.3.1 数据结构
数据元素是由数据项组成的,数据是由数据元素组成的。
数据:所有能输入到计算机中病能被计算机程序识别和处理的符号集合。分为数值数据(整数、实数等)与非数值型数据(文字、声音、图形、图像等)。
数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
数据项:构成数据元素的不可分割的最小单位。
数据结构:指相互之间存在一定关系的数据元素的集合。
逻辑结构:指数据元素之间逻辑关系的整体。 面向问题
根据数据元素之间逻辑关系的不同,数据结构分为以下四类:
(1)集合——属于同一个集合
(2)线性结构——一对一
(3)树结构——一对多
(4)图结构——多对多
树结构和图结构也称为非线性结构。
存储结构(物理结构):数据及其逻辑结构在计算机中的表示。有顺序存储结构(特点:占据连续的存储空间;有点:占据存储空间少)和链接式存储结构(优点:灵活)。
面向计算机
1.3.2抽象数据类型
抽象数据类型:一个数据结构以及定义在该结构上的一组操作总称。
ADT抽象数据类型名
Data
数据元素之间逻辑关系的定义
Operation
操作1
前置条件
输入
功能
输出
后置条件
操作2
……
……
操作n
……
endAdt
1.4 算法及算法分析
1.4.1算法及其描述方法
算法:对特定问题求解步骤的一种描述,是指令的有限序列。
算法的5个特性:输入、输出、有穷形、确定性、可行性。
欧几里得算法:
(1)将m除以n得到余数r
(2)若r等于0,则n为最大公约数,算法结束;否则执行(3)
(3)将n的值放在m中,将r的值放在n中,重新执行(1)
1.4.2算法分析
算法的时间复杂度:只考察当问题规模充分大时,算法中基本语句的执行次数在渐近意义下的阶,称为算法的渐近时间复杂度,简称时间复杂度。
算法的时间复杂度:指在算法的执行过程中,需要的辅助空间数量。辅助空间是出算法本身和输入输出数据算占据的空间外,算法历史开辟的存储空间。通常记作:
S(n)=O(f(n))
其中,n为问题规模,分析方法与算法的时间复杂度类似。