数据结构第一章

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.1 程序设计的实质是数据表示和数据处理。

1.2数据要能被计算机加工处理,首先必须能够存储在机器中,成为能被机器直接操作的对象。数据在计算机存储器中的这种存在形式称为机内表示。将数据从机外表示转化为机内表示,这项任务称为数据表示。

1.3用适当的可执行语句编制程序,以便让计算机去执行对数据机内表示的各种操作,从而实现处理要求,即得到所需的结果,这项工作称为数据处理。

1.4 软件工程学认为:软件系统的生存期可分为软件计划、需求分析、软件设计、软件编码、软件测试和软件维护等六个阶段。程序设计包括前五个阶段(程序设计包括数据表示和数据处理两个方面)。

1.5数据结构课程集中讨论以设计阶段为核心、同时涉及编码阶段和分析阶段的一个小范围内的若干基本问题。概括的说,其主要内容包括:数据的逻辑结构、定义在逻辑结构上的基本运算、数据的存储结构和运算的实现。其中,数据的逻辑结构是数据的组织形式,基本运算规定了数据的基本操作方式。由一种逻辑结构和一组基本运算构成的整体是实际问题的一种数学模型,这种数学模型的建立、选择和实现是数据结构的核心问题。

1.6 数据表示任务是逐步完成的,即数据表示形式的变化过程是:机外表示——》逻辑结构——》存储结构。

数据处理任务也是逐步完成的,即有转化过程:处理需求——》基本运算和运算——》算法。

数据表示与数据处理是密切相关的,数据处理方式总是与数据的相应的表示形式相联系,反之亦然。

2.1从数据结构的观点看,数据就分成三个不同的层次,即数据、数据元素和数据项。凡能被计算机存储、加工的对象通称为数据;数据元素是数据的基本单位,在程序中作为一个整体而加以考虑和处理,即数据元素被当作运算的基本单位,并且通常具有完整确定的实际意义,又被称为元素、结点、顶点或记录;数据元素又是数据项组成的,但数据项通常不具有完整确定的实际意义,或不当作一个整体对待,又称为字段或域,它是数据的不可分割的最小标识单位。

2.2从数据结构的观点看,重要的是数据元素之间的逻辑关系。所谓逻辑关系是指数据元素之间的关联方式或称“邻接关系”。数据元素之间逻辑关系的整体称为逻辑结构。数据的逻辑结构就是数据的组织形式。四类基本逻辑结构:集合、线性结构、树形结构和图状结构。1)逻辑结构与数据元素本身的形式、内容无关

2)逻辑结构与数据元素的相对的相对位置无关

3)逻辑结构与所含结点个数无关

2.3运算是指在任何逻辑结构上施加的操作,即对逻辑结构的加工。这种加工以一个或多个逻辑结构及其他有关参数为对象,以经过修改的逻辑结构或从原逻辑结构中提取的有关信息为结果。根据操作的效果将运算分成两种基本类型:

1)加工型运算,其操作改变了原逻辑结构的“值”

2)引用型运算,其操作不改变原逻辑结构,只从中提取某些信息作为运算的结果

2.4假如A是S上的一些运算的集合,B是A的一个子集,使得A中每一运算都可以“归约”为B中一个或多个运算,而B中任一运算不可归约为别的运算,则称B中运算为(相对于A的)基本运算。

2.5对某些逻辑结构S和在S上的基本运算集B,由S和B构成的整体(S,B)往往在大量不同种类的实际问题的求解中反复出现,在此将这样的整体称为一个“数据结构”;线性表、队列、栈等都是数据结构,这三个数据结构有相同的逻辑结构但有不同的基本运算集。

3.1存储实现的基本目标是建立数据的机内表示,存储实现建立的机内表示应遵循选定的逻

辑结构。数据的机内表示称为数据的存储结构。

3.2通常,存储结点之间可以有四种关联方式,称为四种基本存储方式:顺序存储方式、链式存储方式、索引存储方式、散列存储方式。原则上,一种逻辑结构可以采用四种存储方式中的任何一种来实现,由此得到的存储结构称为给定逻辑结构的存储实现或存储映像。

3.3一个运算的实现是指一个完成该运算功能的程序。由于运算只描述处理功能,不包括处理步骤和方法,因此运算实现的核心是处理步骤的规定,即算法设计。

一个算法规定了求解给定类型问题所需的所有“处理步骤”及其执行顺序,使得给定类型的任何问题能在有限时间内被机械的求解。根据描述算法的语言的不同,算法可分为三类:1)运行终止的程序可执行部分,用程序设计语言描述的算法,这种算法可直接在计算机上运行,有时也将这种算法称为程序

2)伪语言算法,采用某种“伪程序设计语言”描述的算法,该算法不可直接在计算机上运行,但容易编写和阅读,故适合教学

3)非形式算法,用自然语言,同时可能还使用了程序设计语言或伪程序设计语言描述的算法称为非形式算法。

4.1通常从以下几方面评价算法(包括程序)的质量:

1)正确性算法应能正确的实现预定的功能

2)易读性算法应易于阅读和理解

3)健壮性当环境发生变化时,算法应能适当地做出反应或进行处理

4)高效率即达到所需的时空性能

这些指标往往是互相冲突的,因此在实际评价中应根据需要有所侧重;数据结构课程着重讨论算法的时空性能。确定一个算法的时空性能,这项工作称为“算法分析”

4.2一个算法的时空性能是指该算法的时间性能(或时间效率)和空间性能(或空间效率),前者是算法包含的计算量,后者是算法需要的存储量

2.3估算求解某类问题的各个算法在给定输入下的计算量:

1)根据该类问题的特点合理的选择一种或几种操作作为“标准操作”

2)确定每个算法在给定输入下共执行了多少次标准操作,并将此次数规定为该算法在给定输入下的计算量

4.4确定一个算法的计算量的两种方式:

1)以算法在所有输入下的计算量的最大值作为算法的计算量,这种计算量称为算法的最坏情况时间复杂性或最坏情况时间复杂度

2)以算法在所有输入下的计算量的加权平均值作为算法的计算量,这种计算量称为算法的平均时间复杂性或平均时间复杂度

最坏情况时间复杂性和平均时间复杂性通称为时间复杂性或时间复杂度;一个算法的输入规模或问题的规模是指作为该算法输入的数据所含数据元素的数目,或与此数目有关的其他参数。

4.5常见的量级:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、平方阶O(n的平方)和指数阶O(2的n次方);通常认为,具有指数量级的算法是实际不可计算的,而量级低于平方阶的算法是高效率的。存储量和空间复杂性的概念与计算量和时间复杂性的概念类似,但通常更关心一个算法除输入数据占用存储空间之外所需的附加存储空间的大小。

4.6“数据结构”的两种含义:一是作为一门课程的名称,二是作为一个科学概念。作为一个科学概念,一种观点认为,一个数据结构是由一个逻辑结构S、一个定义在S上的基本运算集△和S的一个存储实现D所构成的整体(S、△、D);本书倾向另一观点,一个数据结构是由一个逻辑结构S和S上的一个基本运算集△构成的整体(S、△)。数据结构的基

相关文档
最新文档