第一节 数据结构

一是如何在计算机中方便、高效地表示和组织数据;
二是如何在计算机存储器(内存和外存)中存储数据;
三是如何对存储在计算机中的数据进行操作,可以有哪些操作,如何实现这些操作以及如何对同一问题的不同操作方法进行评价;
四是必须理解每种数据结构的性能特征,以便选择一个适合于某个特定问题的数据结构。
数据(Data)
可以是数值数据,如整数、实数或复数;
可以是非数值数据,如字符、文字、图形、图像、声音等。
数据元素(Data Element)
数据元素是数据的基本单位,在计算机程序中通常被作为一个整体进行考虑和处理。数据元素有时也被称为元素、结点、顶点、记录等。
数据项(Data Item)
一个数据元素可由若干个数据项组成。数据项是不可分割的、含有独立意义的最小数据单位,数据项有时也称为字段(Field)或域(Domain)。
数据项分为两种,一种叫做初等项,如学生的性别、籍贯等,在处理时不能再进行分割;另一种叫做组合项,如学生的成绩,它可以再分为数学、物理、化学等更小的项。
数据对象(Data Object)
数据对象是性质相同的数据元素的集合, 是数据的一个子集。例如,整数数据对象是{0,±1,±2,±3,…},字符数据对象是{a,b,c,…}。
数据类型(Data Type)
数据类型可分为两类:一类是非结构的原子类型,如C#语言中的基本类型(整型、实型、字符型等);另一类是结构类型,它的成分可以由多个结构类型组成,并可以分解。结构类型的成分可以是非结构的,也可以是结构的。例如,C#语言中数组的成分可以是整型等基本类型,也可以是数组等结构类型。
数据结构(Data Structure)
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。在任何问题中,数据元素之间都不是孤立的,而是存在着一定的关系,这种关系称为结构(Structure)。根据数据元素之间关系的不同特性,通常有 4 类基本数据结构:
(1) 集合(Set):
该结构中的数据元素存在着“同属于一个集合”的关系
(2) 线性结构(Linear Structure):
该结构中的数据元素存在着“一对一”的关系。
(3) 树形结构(Tree Structure):
该结构中的数据元素存在着“一对多”的关系。
(4) 图状结构(Graphic Structure):
该结构中的数据元素存在着“多对多”的关系。

数据结构(Data Structure)简记为 DS,是一个二元组,
DS = (D,R)
D 是数据元素的有限集合,
R 是数据元素之间关系的有限集合。
注释:
(D,R)表示一个数学上数组.表示D*R个数组元素.

从数据类型和数据结构的概念可知,二者的关系非常密切。数据类型可以看作是简单的数据结构。数据的取值范围可以看作是数据元素的有限集合,而对数据进行操作的集合可以看作是数据元素之间关系的集合。

数据结构包括数据的逻辑结构和物理结构。上述数据结构的定义就是数据的逻辑结构(Logic Structure),数据的逻辑结构是从具体问题抽象出来的数学模型,与数据在计算机中的具体存储没有关系。然而,我们讨论数据结构的目的是为了在计算机中实现对它的操作,因此还需要研究在计算机中如何表示和存储数据结构,即数据的物理结构(Physical Structure)。数据的物理结构又称为存储结构(Storage Structure),是数据在计算机中的表示(又叫映像)和存储,包括数据元素的表示和存储以及数据元素之间关系的表示和存储。

数据的存储结构包括顺序存储结构链式存储结构两种。
顺序存储结构(Sequence Storage Structure)是通过数据元素在计算机存储器中的相对位置来表示出数据元素的逻辑关系,一般把逻辑上相邻的数据元素存储在物理位置相邻的存储单元中。在 C#语言中用数组来实现顺序存储结构。因为数组所分配的存储空间是连续的,所以数组天生就具有实现数据顺序存储结构的能力。
链式存储结构(Linked Storage Structure)对逻辑上相邻的数据元素不要求其存储位置必须相邻。链式存储结构中的数据元素称为结点(Node),在结点中附设地址域(Address Domain)来存储与该结点相邻的结点的地址来实现结点间的逻辑关系。这个地址称为引用(Reference),这个地址域称为引用域(Reference Domain)。

posted @ 2016-05-17 16:29  贴心小冰棍  阅读(276)  评论(0编辑  收藏  举报