语言课件数据结构01绪论09.pptxVIP

  • 1
  • 0
  • 约2.98千字
  • 约 79页
  • 2022-06-15 发布于北京
  • 举报
1.1 数据结构讨论的范畴;1.1 数据结构讨论的范畴; 很多数值计算问题的数学模型通常可用一组线性或非线性的代数方程组或微分方程组来描述。例如,大家都熟悉的“鸡兔同笼”问题,可转化为对“二元一次方程组”进行求解。又如天天看到的天气预报,它的数学模型是一个环流模式方程。 ; 但是当计算机进入非数值计算领域、特别是用在管理上的时候,计算机的操作对象之间的关系就无法用数学方程加以描述了。 举几个例子。 ;非数值计算的程序设计问题;例1-2:图书馆书目自动检索问题 ; 为方便读者借阅书籍,实现自动和快速查询,需要为整个书库的书目信息设计恰当的数学模型和相应的查询算法。例如最简单的做法是建立一个按登录号顺序排列的书目文件和三张分别按书名、作者名和分类号顺序排列的索引表。 ; 数据结构 由这四张表构成的文件,即书目自动检索的数学模型。 算法 是按照某个特定要求(如给定书名)对书目文件进行查询操作。 ; 在这类问题中,计算机所处理的对象之间通常存在一种最简单的线性关系,所以这类问题的数学模型可转化为线性的数据结构。 ;例1-3:计算机和人对弈问题 ; 首先将对弈的策略事先输入到计算机。由于对弈的过程是在一定的规则下随机进行的,所以,计算机必须对可能发生的情况以及相应的策略都考虑周全。 对弈问题中,计算机操作的对象是在对弈过程中可能出现的棋盘状态,我们称之为‘格局’,而格局之间的关系是由比赛规则决定的。; 通常,这个关系不是线性的。可将对弈的过程看作是一棵倒长的‘树’ ,对弈的过程就是从树根沿树叉到某个叶子的过程, ; 数据结构 反映‘格局’状态的树形结构,树形结构即是该问题的数学模型。 算法 对弈的规则和策略。因为对弈的过程是在一定的规则下随机进行的,计算机必须对可能发生的情况以及相应的策略考虑周全。 ; 在这类问题中,计算机所处理的对象之间通常不是一种线性关系,所以这类问题的数学模型可转化为非线性的树形数据结构。;例1-4:煤气管道的铺设问题 ; 假设要在某个城市的n个居民区之间铺设煤气管道,对 n 个小区只需铺设 n-1 条管线,由于地理环境不同等因素使各条管线所需投资不同,如何使投资成本最低? ; 我们用顶点表示城市,用边及权值表示城市之间的投资费用,所以,这是一个讨论图的最小生成树的问题。 ; 数据结构 反映数据之间关系的图形结构,图形结构即是该问题的数学模型。 算法 图的最小生成树的算法。 ; 以上几个例子可见,描述这类非数值计算问题的数学模型不再是数学方程,而是用表、树和图之类的数据结构,这正是数据结构要讨论的问题。;概括地说:;1.2 基本概念;一、数据与数据结构;是数据(集合)中的一个“个体”; 数据项:;数据结构:;又例,在2行3列的二维数组{a1, a2, a3, a4, a5, a6} 中六个元素之间 存在两个关系:;再例,在一维数组 {a1, a2, a3, a4, a5, a6} 的数据元素之间存在如下的次序关系:;数据的逻辑结构可归结为以下四类:;数据结构的形式定义为:;数据的存储结构 ;数据元素的映象方法:;关系的映象方法:;链式映象;在不同的编程环境中,;例如:;二、数据类型;例如,C 语言中提供的基本数据类型有:; 数据类型 是一个 值的集合 和定义在此集合上的 一组操作 的总称。;三、抽象数据类型 (Abstract Data Type 简称ADT);例如,抽象数据类型复数的定义:;基本操作:; GetImag( Z, ImagPart ) 初始条件:复数已存在。 操作结果:用ImagPart返回复数Z的虚部值。;假设:z1和z2是上述定义的复数;ADT 有两个重要特征:;抽象数据类型的描述方法;ADT 抽象数据类型名 { 数据对象:〈数据对象的定义〉 数据关系:〈数据关系的定义〉 基本操作:〈基本操作的定义〉 } ADT 抽象数据类型名;赋值参数 只为操作提供输入值。 引用参数 以打头,除可提供输入值外, 还将返回操作结果。;抽象数据类型的表示和实现;typedef struct { float realpart; float imagpart; }complex;;float GetReal( cpmplex Z ); // 返回复数 Z 的实部值;// -----基本操作的实现;1.3 算法和算

文档评论(0)

1亿VIP精品文档

相关文档