一是如何在计算机中方便、高效地表示和组织数据;
二是如何在计算机存储器(内存和外存)中存储数据;
三是如何对存储在计算机中的数据进行操做,能够有哪些操做,如何实现这些操做以及如何对同一问题的不一样操做方法进行评价;
四是必须理解每种数据结构的性能特征,以便选择一个适合于某个特定问题的数据结构。
数据(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),是数据在计算机中的表示(又叫映像)和存储,包括数据元素的表示和存储以及数据元素之间关系的表示和存储。spa
数据的存储结构包括顺序存储结构和链式存储结构两种。
顺序存储结构(Sequence Storage Structure)是经过数据元素在计算机存储器中的相对位置来表示出数据元素的逻辑关系,通常把逻辑上相邻的数据元素存储在物理位置相邻的存储单元中。在 C#语言中用数组来实现顺序存储结构。由于数组所分配的存储空间是连续的,因此数组天生就具备实现数据顺序存储结构的能力。
链式存储结构(Linked Storage Structure)对逻辑上相邻的数据元素不要求其存储位置必须相邻。链式存储结构中的数据元素称为结点(Node),在结点中附设地址域(Address Domain)来存储与该结点相邻的结点的地址来实现结点间的逻辑关系。这个地址称为引用(Reference),这个地址域称为引用域(Reference Domain)。对象