您的位置:首页 > 理论基础 > 数据结构算法

第零章 数据结构基本知识

2017-08-23 15:32 246 查看
数据
数据是信息的载体,它能够被计算机识别、存储和加工处理,是计算机程序加工的原料。
随着计算机领域的发展,数据的范畴包括整数、实数、字符串、图像和声音等。

数据元素
数据元素是数据的基本单位,数据元素也称为元素、结点、顶点、记录。
一个数据元素可以有若干个数据项(也可称为字段、域、属性)组成。数据项是具有独立含义的最小标示单位。

数据结构
数据结构指的是数据之间的相互关系,即数据的组织形式。

数据结构与数据类型的区别
 数据结构是指数据对象以及该数据对象集合中的数据元素之间的相互关系。包括数据的逻辑结构、数据的存储结构和数据的运算(操作)。例如:线性表
,队列,栈……(算法书第四版:算法是计算机实现的解决问题的方法,而数据结构即便于算法操作的组织数据的方法。)
数据类型是计算机程序中的数据对象以及定义在这个数据对象集合上的一组操作的总称。例如c语言中的整数类型是区间(-maxint,maxint)上的整数,在这个集合上可以进行加、减、乘等操作。 

1.数据结构一般包括三个方面
数据元素之间的逻辑关系,也称数据的逻辑结构;数据的逻辑结构是从逻辑关系上描述数据,与数据的存储无关,独立于计算机的。数据的逻辑结构可以看做从具体问题抽象出来的数学模型。
数据元素及其关系在计算机存储器内的表示,称为数据的存储结构;数据的存储结构是逻辑结构用计算机语言的实现,它依赖于计算机语言。对于机器语言而言,存储结构是具体的。一般,只在高层语言的层次上讨论存储结构。
数据的运算,即对数据施加的操作;数据的运算定义在数据的逻辑结构上,每种逻辑结构都有一个运算的集合。最常用的检索、插入、删除、更新、排序等运算实际上只是在抽象的数据上所施加的一系列抽象的操作。所谓抽象的操作,是指我们只知道这些操作是做什么,而无需考虑如何做,只有确定了存储结构之后,才考虑如何具体实现这些运算。

2.数据的逻辑结构分类
在不产生混淆的前提下,常将数据的逻辑结构简称为数据结构。数据的逻辑结构有两大类:
线性结构:线性结构的逻辑特征:如结构是非空集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。线性表是一个典型的线性结构。栈、队列、串等都是线性结构。
非线性结构:非线性结构的逻辑特征是:一个结点可能有多个直接前趋和直接后继。数组(
数组可以看做是线性表的推广,将线性表推广到二维或者高维,就是我们所说的数组,所以其逻辑结构上是非线性的,实质上是多个线性关系的组合。所以这里说数组是非线性结构!0)、广义表、树和图等数据结构都是非线性结构

3.数据的四种基本存储方法
顺序存储方法:该方法把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。由此得到的存储表示顺序存储结构。该方法主要用于线性的存储结构,非线性的数据结构也可通过某种线性化的方法实现顺序存储。
链接存储方法:该方法不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系由附加的指针字段表示。由此得到链式存储解耦股。    
索引存储方法:该方法通常在储存结点信息的同时,还建立附加的索引表。索引表由若干索引项组成。若每个结点在索引表中只对应一个索引项,该索引表称为稠密索引,若一组结点在索引表中只对应一个索引项,则该索引表称为稀疏索引。
散列存储方法:该方法的基本思想:根据结点的关键字直接计算出该结点的存储地址。
四种基本存储方法,即可单独使用,也可组合起来对数据结构进行存储映像。
同一逻辑结构采用不同的存储方法,可以得到不同的存储结构,选择何种存储结构来表示相应的逻辑结构,是具体要求而定,主要考虑运算方便及算法的时空要求。

4.数据结构三方面的关系
数据的逻辑结构、存储结构及数据的运算这三个方面是一个整体。
存储结构是数据结构 不可缺少的一个方面:同一个逻辑结构的不同存储结构可冠以不同的数据结构名称来标示。
     例如:线性表是一种逻辑结构,若采用顺序结构方法的存储表示,可称为顺序表;若采用链式存储方法,则可称为链表;若采用散列存储方法,则可称为散列表。
数据运算也是数据结构不可分割的一方面:在给定了数据的逻辑结构和存储结构之后,按定义的运算集合及其运算的性质不同,也可能导致完全不同的数据结构。
    例如:若对线性上的插入、删除运算限制在表的一端进行,则该线性表称为栈;如果弱队线性的插入限制在表的一端进行,而删除限制在表的另一端,则该线性表称为栈;更进一步,若线性表采用顺序表或链表作为存储结构,则对插入和删除运算做了上述限制后,可分别得到顺序栈或链栈顺序队列或链队列。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: