第一章:绪论(上)

1.2 数据结构的概念及分类

1.2.1 基本概念和术语

数据(Data)是描述客观事物的数值,字符以及能及时输入计算机且能被处理的各种符号集合。

数据元素(Data Element)是组成数据的基本单位,在计算机中通常作为一个整体纪念性考虑和处理。一个数据元素可由多个或多个数据项组成。

数据项(Data Item)是组成数据元素的,有独立含义的,不可分割的最小单元

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

数据结构(Data Structure)是指互相之间存在一种或多种特定关系的数据元素集合。即,数据结构是带结构的数据元素的集合,结构指的是数据元素之间存在的关系。

1.2.2 数据结构的分类

数据结构分为逻辑结构和存储结构

1.逻辑结构

是数据元素之间罗技关系的描述。它与数据的存储无关,是独立于计算机的。通常有四种基本结构:集合结构,线性结构,树形结构和图结构。

  • 集合结构:除了同属一个集合的关系外,无其他关系。如,确定一名学生是否为某班成员,只需将此班级看作一个集合。
  • 线性结构:结构中数据元素之间,存在一对一的线性关系。除第一个和最后一个,每个元素只有一个前驱数据元素和一个后继数据元素。1:1
  • 树形结构:一对多,一个前驱。1:n
  • 图结构:多对多的任意关系,若干前驱后继。任何两个节结点都可以邻接。m:n

以上四种基本结构中,集合结构中的元素之间只有同属的关系,组织非常松散,通常可以用其他结构代替它。因此,数据的逻辑结构可分为两大类,线性结构和非线性结构。线性结构包括线性表,栈,队列,串,数组和广义表,非线性结构包括树和图。

2.存储结构

数据存储到计算机中时,通常要求既要存储每个数据元素,又要存储数据元素之间的逻辑关系。数据在计算机中通常有两种存储结构,分别是 顺序存储结构  , 链式存储结构。

  • 顺序存储结构:采用一系列连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。其特点是两个逻辑上相邻的数据元素在存储器中的位置也相邻。
  • 链式存储结构:借助每个元素的指针来表示数据元素之间的逻辑关系。特点为逻辑上相邻的数组元素在存储器中不一定相邻,数据间的逻辑关系表现在数据元素的链接关系上。

1.3 数据类型和抽象数据类型

1.数据类型(Data Type)

是一组性质相同的值集定义和定义在这个值集上的一组操作总称。

按照值的不同特性,高级程序设计语言中的数据类型分为两大类

一 非结构的原子类型,其值是不可分解的,如c语言中的标准类型(整型,实型、字符型和枚举类型),指针类型,空类型。(储存空间固定,直接映射为机器语言,不能拆分为其他类型的组件)

二是结构类型,其值是由若干成分按某种结构组成的,因此是可以分解的,并且其成分可以是非结构的,也可以是结构的,如c语言中的结构体类型。

2.抽象数据类型

抽取出问题的本质,而忽略非本质的细节。

抽象数据类型(ADT)通常是用户定义的表示应用问题的数学模型以及定位在这个模型上的一组操作。ADT可以理解为数据类型的抽象。数据类型与ADT的区别在于:数据类型指的是高级程序设计语言的基本数据类型,而ADT指的是在基本数据类型支持下用户自定义的数据类型。

ADT的特点是将使用与现实分离,实行封装和信息隐藏,也就是说,设计抽象数据类型的时候,类型的定义与实现是分离的。抽象数据的定义格式如下:

ADT<抽象数据类型名>

{

数据对象:<数据对象的定义>

结构关系:<数据关系的定义>

基本操作:<基本操作的定义>

}

ADT<抽象数据类型名>

其中,数据对象和数据关系的定义采用数学符号和自然语言描述;基本操作的定义包括操作名称,参数表,初始条件和操作结果四部分,其定义格式为

<操作名称>(参数表)

初始条件:<初始条件描述>

操作结果:<操作结果描述>

你可能感兴趣的:(数据结构,c,语言版,算法,学习,笔记,数据结构)