数据结构的定义和研究的内容

原创 2016年08月28日 18:21:52

定义:

按照某种逻辑关系组织起来的一批数据,用一定的存储方式存储在计算机的存储器中,并在这些数据上定义一个运算的集合,就成为一个数据结构。

数据结构研究的内容如下:

(1)数据的逻辑结构:按照某种逻辑关系将数据组织好,即逻辑结构。

(2)数据的存储结构:将数据及数据之间的关系存储到存储区域中,即存储结构。

(3)数据的运算:在这些数据上定义一个基本运算的集合。

 

一、数据的逻辑结构

数据的逻辑结构是数据元素之间的逻辑关系。它是根据实际问题本身所含数据之间的内在联系而抽象出来的数学模型,与计算机无关,所以被称为数据的逻辑结构。

由于数据的逻辑结构是数学模型,所以可以借助数学方法来表示,我们可以用离散数学中关系代数的二元组表示:

Data_Structure = (D,S)

D = { d1,d2,...,dn }di(1<=i<=n)代表数据元素

S = { r1,r2,...,rm }, rj(1<=j<=m)代表数据元素之间的关系。

其中: Data_Structure代表数据结构的类型,D代表数据的集合,S代表关系的合集。S里的元素我们用<dm, dn>表示,其表示的含义是dm指向dn,所以,这两个数据的顺序不能颠倒。

以下图为例:


我们就可以这样表示:

L = (D, S)

D = {d1, d2, d3, d4,d5}

S = {<d1, d2>, <d2, d3>, <d3, d4>, <d4, d5>}

针对二元数组表示的逻辑结构,有如下的常用术语:

(1)前驱结点、后继结点、相邻结点。

放到上面的这个例子当中就是:d1d2的前驱结点、d3d2的后继结点……d1无前驱结点,d5无后继结点。

(2)开始结点、终端结点、内部结点

以上图为例,d1是开始结点;d5是后继结点;d2d3d4是内部节点。

 

二、数据结构的分类

数据结构分为两大类:线性结构 非线性结构。

线性结构:经典的线性结构是线性表。

非线性结构:经典的非线性结构是树形结构和图形结构。

三、数据的存储结构

数据的存储结构是指数据的逻辑结构到计算机存储区域的映射。对于数据的逻辑结构Data_Structure(D, S),在映射中,一方面要将数据集D中的数据元素存放到存储区域中,另一方面还要体现关系S

 

完成数据的逻辑结构到存储区域的映射可以有很多种方法,常用的数据存储的方法有如下四种:

(1)顺序存储:把逻辑上相邻的数据元素存储在物理位置上相邻的存储单元里,例如:数组。

(2)链接存储:通过附加指针域来表示数据元素之间的关系。

(3)索引存储:通过附加索引表来表示数据元素之间的关系。索引表中的每一项称为索引项,用来标识一个或一组数据的存储位置。索引存储大致分为两种:

稠密索引:每个数据元素对应一个索引项。

稀疏索引:一组数据元素对应一个索引项。

(4)散列存储:基本思想是,根据数据元素的关键字直接计算出该数据元素的存储地址,通常成为关键字-地址转换法。这种方法需要设计一个散列函数,以关键字为自变量,散列函数值即为地址。用这种存储方法设计的存储结构最适合按照关键字进行查找,但数据元素之间的关系已经无法再存储结构上体现。

三、数据的运算

数据的运算(也称操作)是指对数据元素进行加工处理。数据的基本运算包括查找、插入、删除、排序等。

注意:在讨论任何一种数据结构时,都应该将数据的逻辑结构、数据的存储结构和数据的运算这三方面看成一个整体,不要孤立地理解一个方面,而要注意它们之间的联系。三个方面中的任意一方面不同,都可以被定义成不同的数据结构。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

《C语言接口与实现》——头文件数据结构定义研究

共5个文件,分别是x.h,x.cpp,y.h,y.cpp,1.cpp(main函数所在文件): 主要针对《C语言接口与实现》书中大量的定义:typedef struct T *T方式的解释,都放在源...

内容分析工具数据结构final

  • 2016年12月11日 13:02
  • 13KB
  • 下载

内容分析工具数据结构

  • 2016年12月09日 11:03
  • 7KB
  • 下载

高级数据结构研究-B树系列以及红黑树

程序员做的越久,越发觉得基本功显得越来越重要了。基本功不扎实会潜移默化的影响你的程序开发,这不是,上次浏览博客,看到了一篇运用B+树实现数据库索引的功能,当时就不明白了,看似毫无关系的两者,怎么会有联...

内容分析工具数据结构161209

  • 2016年12月09日 14:42
  • 9KB
  • 下载

数据结构之图的邻接矩阵BFS(参考C博客—研究毛)

#include using namespace std; #define QSIZE 20 #define MAXVEX 30 typedef char VType; typedef int ETy...

内容分析数据结构123

  • 2016年12月09日 12:03
  • 8KB
  • 下载

数据结构实验内容!!!!!

  • 2008年02月19日 20:20
  • 154KB
  • 下载

WebRTC音视频引擎研究(2)--VoiceEngine音频编解码器数据结构以及参数设置

WebRTC技术交流群:234795279 1、VoiceEngine Codec数据结构        WebRTC中,用一个结构体struct CodecInst表示特定的音频编解...
  • temotemo
  • temotemo
  • 2012年05月04日 10:55
  • 16344
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构的定义和研究的内容
举报原因:
原因补充:

(最多只允许输入30个字)