数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。 数据结构往往同高效的检索算法和索引技术有关。 数据结构在计算机科学界至今没有标 准的定义。个人根据各自的理解的不同而有不同的表述方法: 在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存 在于该对象的实例和组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函 数来给出。”他将数据对象(data )定义为“一个数据对象是实例或值的集合”。 . 在《数据结构与算法分析》一书中的定义是:“数据结构是 ADT(抽象 数据类型 Data Type) 的物理实现。” .Kruse 在《数据结构与程序设计》一书中,将一个数据结构的设计过程分成抽象 层、数据结构层和实现层。其中,抽象层是指抽象数据类型层,它讨论数据的逻辑结构及其 运算,数据结构层和实现层讨论一个数据结构的表示和在计算机 在许多类型的程序的设计 中,数据结构的选择是一个基本的设计考虑因素。
许多大型系统的构造经验表明,系统实现 的困难程度和系统构造的 质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论 哪种情况,选择合适的数据结构都是非常重要的。 选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之 在计算机科学中,数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象(数据元素)以及它们之间的关系和运算等的学科,而且确保经过这些运算后所得到的新结 构仍然是原来的结构类型。 计算机是一门研究用计算机进行信息表示和处理的科学。这里面涉及到两个问题:信息的表示,信息的处理 而信息的表示和组织又直接关系到处理信息的程序的效率。随着计算机的普及,信息量的增加数据结构论文,信息范围的拓宽,使许多系统程序和应用程序的规模很大,结构又相当复杂。因此, 为了编写出一个“好”的程序,必须分析待处理的对象的特征及各对象之间存在的关系,这就 是数据结构这门课所要研究的问题。众所周知,计算机的程序是对信息进行加工处理。
在大 多数情况下,这些信息并不是没有组织,信息(数据)之间往往具有重要的结构关系,这就 是数据结构的内容。数据的结构,直接影响算法的选择和效率。 计算机解决一个具体问题时,大致需要经过下列几个步骤:首先要从具体问题中抽象出一个适当的数学模型,然后设计一个解此数学模型的算法(),最后编出程序、进行 测试、调整直至得到最终解答。寻求数学模型的实质是分析问题,从中提取操作的对象,并 找出这些操作对象之间含有的关系,然后用数学的语言加以描述。计算机算法与数据的结构 密切相关,算法无不依附于具体的数据结构,数据结构直接关系到算法的选择和效率。运算 是由计算机来完成,这就要设计相应的插入、删除和修改的算法 。也就是说,数据结构还 需要给出每种结构类型所定义的各种运算的算法。 数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并由计算机程序处理的符号的总称。 数据元素是数据的基本单位,在计算机程序中通常作为一个整体考虑。一个数据元素由若干个数据项组成。数据项是数据的不可分割的最小单位。有两类数据元素:一类是不可分割 的原子型数据元素,如:整数"5",字符 "N" 等;另一类是由多个款 项构成的数据元素,其中每个款项被称为一个数据项。
例如描述一个学生的信息的数据元素 可由下列6 个数据项组成。 其中的出生日期又可以由三个数据项:"年"、"月"和"日"组成,则称"出生日期"为组合项,而其它不可分割的数据项为原子项。 关键字指的是能识别一个或多个数据元素的数据项。若能起唯一识别作用,则称之为"主" 关键字,否则称之为 "次" 关键字。 数据对象是性质相同的数据元素的集合,是数据的一个子集。数据对象可以是有限的,也可以是无限的。 数据处理是指对数据进行查找、插入、删除、合并、排序、统计以及简单计算等的操作过程。在早期,计算机主要用于科学和工程计算,进入八十年代以后,计算机主要用于数据处 理。据有关统计资料表明,现在计算机用于数据处理的时间比例达到 80%以上,随着时间 的推移和计算机应用的进一步普及,计算机用于数据处理的时间比例必将进一步增大。 数据结构是指同一数据元素类中各数据元素之间存在的关系。数据结构分别为逻辑结构、存储结构(物理结构)和数据的运算。数据的逻辑结构是对数据之间关系的描述,有时就把 逻辑结构简称为数据结构。逻辑结构形式地定义为(K,R)(或(D,S)),其中,K 数据元素相互之间的关系称为结构。有四类基本结构:集合、线性结构、树形结构、图状结构(网状结构)。
树形结构和图形结构全称为非线性结构。集合结构中的数据元素除了同 属于一种类型外,别无其它关系。线性结构中元素之间存在一对一关系,树形结构中元素之 间存在一对多关系,图形结构中元素之间存在多对多关系。在图形结构中每个结点的前驱结 点数和后续结点数可以任意多个。 数据结构在计算机中的表示(映像)称为数据的物理(存储)结构。它包括数据元素的表示和关系的表示。数据元素之间的关系有两种不同的表示方法:顺序映象和非顺序映象,并 由此得到两种不同的存储结构:顺序存储结构和链式存储结构。顺序存储方法:它是把逻辑 上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系 来体现,由此得到的存储表示称为顺序存储结构。顺序存储结构是一种最基本的存储表示方 法,通常借助于程序设计语言中的数组来实现。链接存储方法:它不要求逻辑上相邻的结点 在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示 称为链式存储结构,链式存储结构通常借助于程序设计语言中的指针类型来实现。索引存储 方法:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。散列存储方法:就 是根据结点的关键字直接计算出该结点的存储地址。
数据结构中,逻辑上(逻辑结构: 数据元素之间的逻辑关系)可以把数据结构分成线性结构和非线性结构。线性结构的顺序存 储结构是一种随 机存取的存储结构,线性表的链式存储结构是一种顺序存取的存储结构。线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。逻辑结构与数据元素本身的形 一个软件系统框架应建立在数据之上,而不是建立在操作之上。一个含抽象数据类型的软件模块应包含定义、表示、实现三个部分。 对每一个数据结构而言,必定存在与它密切相关的一组操作。若操作的种类和数目不同,即使逻辑结构相同,数据结构能起的作用也不同。 不同的数据结构其操作集不同,但下 列操作必不可缺: 抽象数据类型:一个数学模型以及定义在该模型上的一组操作。抽象数据类型实际上就是对该数据结构的定义。因为它定义了一个数据的逻辑结构以及在此结构上的一组算法。抽象 数据类型可用以下三元组表示:(D,S,P)。D 是数据对象,S 的基本操作集。ADT的定义为: ADT抽象数据类型名{ ADT抽象数据类型名; ADT描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能以及它和外 部用户的接口(即外界使用它的方法)。
数据(Data)是信息的载体,它能够被计算机识别、存储和加工处理。它是计算机程序加工的原料,应用程序处理各种各样的数据。计算机科学中,所谓数据就是计算机加工处理的 对象,它可以是数值数据,也可以是非数值数据。数值数据是一些整数、实数或复数,主要 用于工程计算、科学计算和商务处理等;非数值数据包括字符、文字、图形、图像、语音等。 数据元素(Data )是数据的基本单位。在不同的条件下,数据元素又可称为元素、 结点、顶点、记录等。例如,学生信息检索系统中学生信息表中的一个记录等,都被称为一 个数据元素。 有时,一个数据元素可由若干个数据项()组成,例如,学籍管理系统中学生信 息表的每一个数据元素就是一个学生记录。它包括学生的学号、姓名、性别、籍贯、出生年 月、成绩等数据项。这些数据项可以分为两种:一种叫做初等项,如学生的性别、籍贯等, 这些数据项是在数据处理时不能再分割的最小单位;另一种叫做组合项,如学生的成绩,它 可以再划分为数学、物理、化学等更小的项。通常,在解决实际应用问题时是把每个学生记 录当作一个基本单位进行访问和处理的。 数据对象()或数据元素类(Data Class)是具有相同性质的数据元素 的集合。
在某个具体问题中,数据元素都具有相同的性质(元素值不一定相等),属于同一 数据对象(数据元素类),数据 元素是数据元素类的一个实例。例如,在交通咨询系统的交通网中,所有的顶点是一个数据元素类,顶点A 和顶点B 各自代表一个城市,是该数据元素类中的两个实例,其数据元 素的值分别为A 数据结构()是指互相之间存在着一种或多种关系的 数据元素的集合。在任何问题中,数据元素之间都不会是孤立的,在它们之间都存在着这样 或那样的关系,这种数据元素之间的关系称为结构。根据数据元素间关系的不同特性,通常 有下列四类基本的结构: 集合结构。该结构的数据元素间的关系是“属于同一个集合”。线性结构。该结构 的数据元素之间存在着一对一的关系。 树型结构。该结构的数据元素之间存在着一对 多的关系。 图形结构。该结构的数据元素之间存在着多对多的关系,也称网状结构。从上面所介 绍的数据结构的概念中可以知道,一个数据结构有两个要素。一个是数据元素的集合,另一 个是关系的集合。在形式上,数据结构通常可以采用一个二元组来表示。 其中,D是数据元素的有限集,R 上关系的有限集。线性结构的特点是数据元素之 间是一种线性关系,数据元素“一个接一个的排列”。
在一个线性表中数据元素的类型是相同 的,或者说线性表是由同一类型的数据元素构成的线性结构。在实际问题中线性表的例子是 很多的,如学生情况信息表是一个线性表:表中数据元素的类型为学生类型; 一个字符串也 是一个线性表:表中数据元素的类型为字符型,等等。 线性表是最简单、最基本、也是最常用的一种线性结构。线性表是具有相同数据类型的 n(n>=0)个数据元素的有限序列,通常记为: (a1,a2,„ ai-1,ai,ai+1,„an) 时称为空表。它有两种存储方法:顺序存储和链式存储,它的主要 基本操作是插入、删除和检索等。 数组(Array) 队列(Queue) 链表( List) 散列表(Hash) 设想一下数据结构论文,你决定向一个公司投资,而你对某个公司的了解只限于该公司的一条生产线每分钟可生产2000 件产品,你会作出投资的决定吗?如果你是一个公司的管理者,这个公司 日常的每笔交易的详细情况对你来讲的确重要,但如果你把时间花在这些数据上面,你就无 法站在宏观的高度上把握公司的经营方向。 不管是经营一个公司,还是管理一个国家,对 描述事物特征的数据必须加以分析与加工,现实事物是普遍联系的,描述这些事物属性及特 征的数据之间也是普遍联系的,把这些数据之间的关系进行总结,得到集合、线性、树、图 这四种基本关系,由此得到四类基本数据结构。
而每种结构类型的数据,相同的操作(如遍 历、查找等)需要采用不同的方法(算法),不同结构类型可进行的操作也有区别。通过应 用这些算法,可得到事物的总体抽象特征。如:一个公司的年产值,年利润总额,利润率等。 反过来,为了描述一个复杂的事物,必须分析它的组成部分,既要描述每个部分的特征,又要描述各个部分之间的关系,如此细分下去,便于最终用计算机进行处理,而计算机的基 本数据类型不适合描述复杂的结构,且仅用基本数据类型也不便于人的理解与记忆,所以使 用介于两者之间的抽象数据类型成了计算机语言描述现实事物的纽带。人可以方便的把事物 用抽象数据类型描述数据结构论文,也可以方便的把抽象数据类型用基本数据类型来实现,为用计算机处 理现实问题提供了解决方法。 总而言之,数据结构在以后的生活发展中,定会成为人们处理一些复杂问题复杂算法的依据,在教育方面,数据结构这门课程也将会成为众多主导课程中的重中之重,就今而言,它 还处于发展阶段,这么年轻的学科在未来的影响,让我们有目共睹。