数据结构的形式定义、数据的逻辑结构、数据的存储结构
数据结构的形式定义: 数据结构是一个二元组Data_Structures=(D, S),其中,D是数据元素的有限集,S是D上关系的有限集。
说明: 数据结构的定义只说明了数据结构的一个方面,强调的是数据元素之间的逻辑关系。由于数据结构是计算机操作的对象,因此它还有另外一个很重要的方面,就是数据的存储结构,即怎么在计算机中表示出数据的逻辑结构。
数据的逻辑结构: 即数据元素之间的关系,分为4类:
1.线性结构
实质上是一个序列。
2.树形结构
像一个树,一个根可以开展出多个分支。
3.图状结构
4.集合结构
这里集合的概念与数学中集合的概念是相同的。集合结构中数据元素之间不存在任何关系,但是从某种意义上来说,也是一种关系。
数据的存储结构: 逻辑结构在存储器中的映像,或者说,逻辑结构在计算机中的表示。
要想实现逻辑结构在计算机中的表示,应该从数据结构的定义考虑,分别考虑 数据元素的映像方法 和关系的映像方法 。
【数据元素的映像方法】
用二进制位(bit)的位串来表示数据元素。
比如: (321)10可以用(101000001)2来表示,A可以用(001000001)2来表示。当然,在这里用的是ASCII码。
【关系的映像方法】
所有的关系都可以用一个有序对<x, y>来表示,所以,可以把这个有序对<x, y>看作是关系的基本单位。关系的映像方法就是表示有序对<x, y>的方法。
有序对<x, y>在计算机中有2种表示方法:
1.顺序映像
以存储位置的相邻来表示后继关系,简单来说,对于有序对<x, y>,y的存储位置和x的存储位置差一个常量C(C为正,且C是一个隐含值)。
对于顺序映像,整个数据结构只含数据元素本身的信息,没有其他附加的信息。
比如:
对于线性结构(a1, a2, a3),其存储结构如下:
2.链式映像(非顺序映像)
在整个结构中,有序对<x, y>中x和y的存储位置之间没有固定的关系,即它们的存储位置是随意的,这时x和y的后继关系就需要用一个附加信息(指针)来表示。
这个附加信息需要与x绑定在一起,换句话说,这个数据元素x的存储映像是一个节点,这个节点包含两部分信息:一部分信息是数据元素x的映像,另一部分信息是指向后继元素的指针。
数据结构的形式定义、数据的逻辑结构、数据的存储结构相关推荐
- 数据结构之线性表——(二、链式存储结构)[c语言]
数据结构之线性表--(二.链式存储结构-单链表) 链式存储结构以及基本运算的实现 背景:由于线性表的存储特点是用物理上的相邻实现逻辑上的相邻,他要求用连续的存储单元顺序存储线性表中的各个元素,所以,对 ...
- 从零开始学数据结构和算法(二)线性表的链式存储结构
链表 链式存储结构 定义 线性表的链式存储结构的特点是用一组任意的存储单元的存储线性表的数据元素,这组存储单元是可以连续的,也可以是不连续的. 种类 结构图 单链表 应用:MessageQueue 插 ...
- 《大话数据结构》5一文学会数据结构中的静态链表存储结构(概念,实例,代码)
静态链表 1.静态链表基本介绍 (1)静态链表:用数组来代替指针,来描述单链表.我们把用数组描述下标的链表叫做静态链表.也叫游标实现法. (2)首先让数组的元素是两个数据域组成,data 和cur.也 ...
- 数据结构图的邻接表存储结构
图的邻接表存储 我们知道,数据之间的关系有 3 种,分别是 "一对一"."一对多" 和 "多对多",前两种关系的数据可分别用线性表和树结构存 ...
- 【数据结构】树与树的表示、二叉树存储结构及其遍历、二叉搜索树、平衡二叉树、堆、哈夫曼树与哈夫曼编码、集合及其运算
1.树与树的表示 什么是树? 客观世界中许多事物存在层次关系 人类社会家谱 社会组织结构 图书信息管理 分层次组织在管理上具有更高的效率! 数据管理的基本操作之一:查找(根据某个给定关键字K,从集合R ...
- 串--串的定义,顺序、链式存储结构,BF、KMP模式匹配算法(C语言描述)
此文章仅作为自己学习过程中的记录和总结,同时会有意地去用英文来做笔记,一些术语的英译不太准确,内容如有错漏也请多指教,谢谢! 一.串(String)的定义: 串(String):由零个或多个字符组成的 ...
- 【数据结构】 实验报告10 顺序、链式存储结构的二叉树递归遍历、层次遍历求高度
一.实验目的和要求 (源码在最后) 要求: 两种及以上存储结构(建议 顺序存储结构和链式存储结构各一).两种及以上方法(建议 递归遍历和层次遍历方法各一).分析各代码性能. 抽象数据类型(二叉树)独立 ...
- 数据结构开发(5):线性表的链式存储结构
0.目录 1.线性表的链式存储结构 2.单链表的具体实现 3.顺序表和单链表的对比分析 4.小结 1.线性表的链式存储结构 顺序存储结构线性表的最大问题是: 插入和删除需要移动大量的元素!如何解决? ...
- 数据结构笔记(1)——二叉树的基本概念+存储结构及转化
数据结构二叉树笔记(1) 二叉树定义 二叉树,有序树,无序树的区别 一个三结点的有序树,无序数,二叉树的排列 1.无序树 2.有序树 3.二叉树 二叉树的路径和路径长度 二叉树的性质 树的存储结构 1 ...
最新文章
- windows driver 分配内存
- 【Git】IntelliJ IDEA 提交代码到 GitCode 远程仓库 ( GitCode 创建远程仓库 | 将本地工程推送到 GitCode 远程仓库 | 验证权限 | 生成个人访问令牌 )
- 部署Linux服务器实验报告,Linux服务器学习----tomcat 服务配置实验报告(一)
- CodeVS 1068-乌龟棋
- jQuery事件之传递参数
- python修改文件linux编码格式,使用python的chardet库获得文件编码并修改编码
- 大数据实验室(大数据基础培训)——Kafka的安装、配置及基础使用
- Kiterunner上下文感知型内容搜索工具
- HEVC帧间预测之三——TEncCu::xCheckRDCostMerge2Nx2N函数分析
- 老兵戴辉:华为操作系统28年史
- 慕课软件质量保证与测试(第二章.课后作业)
- JAVA中对集合排序
- Python中实现控制小数点位数的方法
- win7无法查看win10工作组计算机,解决:win7系统工作组计算机无法访问我的计算机(图文)...
- 把一个godaddy的域名转回国内的注册商
- 【PyTorch深度学习项目实战100例】—— 基于UNet实现血管瘤超声图像分割 | 第30例
- 【操作系统】—I/O设备的基本概念和分类
- 计算机主机内部同步传输,北航网教计算机网络与应用习题-考查课
- error: cannot open Packages database in /var/lib/rpm
- Android 水波效果原理与实现