数据结构

数据结构就是指按一定的逻辑结构组成的一批数据,使用某种存储结构将这批数据存储于计算机中。

高级程序设计语言通常预定义一些基本数据类型和构造数据类型。

一些抽象出来的逻辑结构来自定义一个抽象数据类型,比如:为线性表,栈,队列,串,广义表,二叉树,树,图等自定义抽象类型。一种抽象数据类型描述一种数据结构的逻辑特性和操作,与该数据结构在计算机内存储及实现无关。 

抽象数据类型的三要素:数据对象,数据关系,基本操作。

逻辑结构

数据的逻辑结构是指数据元素之间的逻辑关系,用一个数据元素的集合(包括n>=0个数据元素)和定义在此集合上的若干关系来表示,常被简称为数据结构。

数据的逻辑结构是独立于计算机的,它与数据在计算机中的存储无关。数据的逻辑结构指数据元素之间的逻辑关系,分四种:集合,线性结构、树形结构、图状结构。再具体一些:线性表,栈,队列,串,广义表,树,图等都是对现实实体的抽象出来的逻辑结构。

 

存储结构

但要对数据进行处理,就必须将数据存储在计算机中。

数据结构在计算机中的表示(又称映像)成为数据的物理结构,又称存储结构。它包括数据元素在计算机中的表示和关系的表示

(1)     顺序存储:将逻辑上相邻的结点存储在一组连续的内存单元中,使得逻辑相邻的结点一定是物理位置相邻,元素在内存中的存储次序与它们的逻辑次序相同。顺序存储通常用于存储具有线性结构的数据,在高级程序设计语言中通常使用数组来实现。

(2)     链式存储:即使用若干地址分散的存储单元存储数据元素,逻辑上相邻的数据元素在物理位置上不一定相邻,数据元素之间的关系需要采用附加信息特别指定。通常,采用指针变量记载前驱或后继元素的存储地址,由数据域和地址域组成的一个结点表示一个数据元素,通过地址域把相互直接关联的结点链接起来,结点间的链接关系提仔数据元素间的逻辑关系。

(3)     索引存储:在线性结构中,设开始结点的索引号为1,其它结点的索引号等于其前继结点的索引号加1,则每一个结点都有唯一的索引号,索引号就是根据结点的索引号确定该结点的存储地址。

(4) 散列(哈希)存储:散列存储的思想是构造一个从集合K到存储区域M的一个函数h,该函数的定义域为K,值域为M,K中的每个结点ki在计算机中的存储地址由h(ki)确定。。

即逻辑结构对应的存储结构

线性表的存储:线性表可以采用顺序存储结构和链式存储结构。采用顺序存储结构的链表称为顺序表,顺序表通常使用采用数组存储其数据元素,将线性表的数据元素顺序存放在数组中,数据元素在数组中的物理顺序与线性表中的元素的顺序关系完全相同。采用链式存储的线性表成为链表。

栈的存储:顺序存储和链式存储两种,分别成为顺序栈和链栈;

队列的存储:队列一般采用链式存储,其中循环队列可采用顺序存储;

数组的存储结构:顺序存储,其中二维数组包括以行序为主序存储和以以列序为主序存储;

          数组是顺序存储的随机存储结构,占用一组连续的存储单元,通过下标识别元素,元素地址是下标的线性函数。在程序设计语言中,数组已被实现为一种造数据类型,程序语言中的整数类型,字符类型等都是基本数据类型,通过一个变量表示一个数据,这种变量称为简单变量。在实际应用中,经常需要处理具有相同性质的一批数据

字符串的存储结构:

     1. 定长顺序存储:类似于线性表的顺序存储结构,用一组地址连续的存储单元存储串值的字符序列(比如使用一维数组存储)。

     2.  堆分配存储:仍以一组地址连续的存储单元存储串值的字符序列,但它们的存储空间是在程序执行过程中动态分配而得。

     3. 串的块链存储:可用链表的方式存储串值。

矩阵的存储结构:高级语言编程时,通常都是用二位数组来存储矩阵元。矩阵存储时,我们感兴趣的不是矩阵本身,而是如何存储矩阵的元,从而使矩阵的各种运算能够有效的进行。矩阵式很多科学与工程计算问题中经常研究的数学对象。

广义表的存储结构:通常采用链式存储结构。

树的常用存储结构有:双亲表示法存储、孩子链表存储、孩子兄弟表示法(又称二叉链表表示法)存储等,这几种存储方法都属于链式存储的不同方式。

二叉树的常用存储结构:适用于完全二叉树的顺序存储结构、二叉链表存储、三叉链表存储法两种链式存储结构。

图的常用存储结构有:邻接矩阵表示法存储(数组表示法)、邻接表法、十字链表法、邻接多重表;其中邻接表法和十字链表法、邻接多重表都是图的不同链式存储方法。

数据的操作(运算集合)

数据操作指对一种数据结构中的数据元素进行各种运算或处理。每种数据结构都有一组数据操作。对于一批数据,数据的运算是定义在数据的逻辑结构之上的,而运算的具体实现就依赖于数据的存储结构。

数据的运算集合要视情况而定,一般而言,数据的运算包括插入、删除、更新、检索、遍历、排序等。

初始化、判断是否为空状态、统计数据元素个数

插入:在一个结构中增加一个新的结点。

删除:在一个结构删除一个结点。

更新:更新一个结构中制定位置的结点。

检索:在一个结构中查找满足条件的结点。

输出:将一个结构中所有结点的值打印、输出。

排序:将一个结构中所有结点按某种顺序重新排列。

遍历:按某种次序访问所有元素,每个元素只能并且只能被访问一次,称为遍历操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值