数据结构(一)

基本概念

数据结构主要研究的内容是数据之间的逻辑关系和物理实现。在计算机发展初期,使用计算机主要是为了处理数值计算问题。

处理具体问题的步骤如下:看问题,想解题思路(数学模型),设计解题方法步骤(算法),写过程(编写程序),得到答案。

对具有一定关系的数据进行组织管理,被称为非数值处理。

数学模型中的对象存在着一种简单的线性关系,该数学模型称为线性数据结构。

数据

数据是描述客观事物的数值、字符以及能输入机器且能被处理的各种符号集合。

数据是信息的载体,能够被计算机识别、存储和处理。

数据包括数值数据和非数值数据。

数据元素

数据元素是组成数据的基本单位,是数据集合的个体。

数据项

一个数据元素可由若干个数据项组成。

数据项是指不可分割的、具有独立意义的最小数据单位,也可称为“字段”。

数据项分为两种:

(1)初等项,不可分割。

(2)组合项,可再分割,可分划为更小的项。

数据对象

数据对象是性质相同的数据元素的集合,是数据的一个子集。

数据结构

数据结构指所有数据关系以及数据元素之间的关系。相当于一个数据元素集合,里面的数据元素相互之间存在着某种特定的关系。

数据结构包括:数据的逻辑结构、数据的存储结构和数据的运算。

数据的逻辑结构

定义

数据元素之间总是存在着这样或者那样的关系,这种关系被称为数据的逻辑结构。数据的逻辑结构与数据的存储无关,独立于计算机,由数据元素之间的逻辑关系组成。

形式

数据结构是一个二元组 Data_Structure=(D, R) 其中: D是数据元素的有限集,R是D上关系的有限集。

基本的逻辑结构

(1)集合结构:结构中的数据元素之间除了同属于一个集合的关系外,无任何其它关系。

(2)线性结构:结构中的数据元素之间存在着一对一的线性关系。

(3)树形结构:结构中的数据元素之间存在着一对多的层次关系。 

(4)图状结构:结构中的数据元素之间存在着多对多的任意关系。

逻辑结构分为线性结构(线性表、栈、队列、字符串、数组)和非线性结构(树、图)。

数据的存储结构

定义

数据的存储结构是逻辑结构在计算机中的存储映象,是逻辑结构在计算机中的实现,它包括数据元素的表示和关系的表示。

同一种逻辑结构可以使用不同的物理结构来实现。

在计算机中表示信息的最小单位是一个二进制位(bit)。一个数据元素的“bit位串”通常称为“结点”。

当数据元素由若干数据项组成时,位串中对应于各个数据项的子位串称为数据字段。

数据元素之间的关系在计算机中有两种基本的存储结构:

(1)顺序存储结构

(2)链式存储结构

说明

存储结构是逻辑关系的映象与元素本身的映象。

逻辑结构是数据结构的抽象,存储结构是数据结构的实现,两者综合起来建立了数据元素之间的结构关系。

数据元素之间的关系在计算机中的表示方法:

(1)顺序映象 (顺序存储结构)

(2)非顺序映象(非顺序存储结构)

数据类型

数据类型,一组性质相同的值集合以及定义在这个值集合上的一组操作的总称。

定义

数据类型指由系统定义的、用户可直接使用且可构造的类型。

数据类型中定义了两个集合:类型的取值范围、可允许使用的一组运算集。特点:抽象性、封装性、构造性

分类

数据类型可分为两类:非结构的原子类型、结构类型

原子类型

原子类型的值是不可分解的。

C语言中的标准类型(整型、实型、字符型、枚举型)及指针和空类型。

结构类型

结构类型的值是由若干成分按某种结构组成的,因此是可以分解的,并且它的成分可以是原子型或结构型。

C语言中的数组、结构体、共用体。

抽象数据类型

基于一类逻辑关系的数据类型以及定义在这个类型之上的一组操作。

定义

一个ADT定义了一个数据对象,数据对象中各元素间的结构关系,以及一组处理数据的操作。

抽象数据类型用(D,S,P)三元组表示,其中D是数据对象,S是D上的关系集,P是对D的基本操作集。

ADT 通常由用户定义且用以表示应用问题的数据模型,通常由基本的数据类型组成,并包括一组相关服务操作。

ADT 抽象数据类型名{

数据对象:< 定义>

数据关系:< 定义>

基本操作:<定义>

}ADT 抽象数据类型名

设计原则

(1)数据抽象(Abstraction)与信息隐藏

一个抽象数据类型确定了一个模型,但将模型的实现细节隐藏起来;

它定义了一组运算,但将运算的实现过程隐藏起来。

(2)模块化(Modularity)

(3)封装(Encapsulation)与复用(Reuse)

  • 28
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值