数据的逻辑结构

数据的逻辑结构指数据元素之间的逻辑关系(和实现无关)。

分类1:线性结构和非线性结构

线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继。
线性表就是一个典型的线性结构,它有四个基本特征:  
1.集合中必存在唯一的一个"第一个元素";
2.集合中必存在唯一的一个"最后的元素";
3.除最后元素之外,其它数据元素均有唯一的"后继";
4.除第一元素之外,其它数据元素均有唯一的"前驱"。

生活案例:冰糖葫芦、 排队上地铁


 
相对应于线性结构,非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个直接后继。
常见的非线性结构有:树(二叉树等),图(网等)。

树:
生活案例:单位组织架构、族谱
技术案例:文件系统。
                             
图:
生活案例:交通线路图,地铁图

分类2:集合结构 线性结构 树状结构 网络结构

逻辑结构有四种基本类型:集合结构、线性结构、树状结构和网络结构。
表和树是最常用的两种高效数据结构,许多高效的算法能够用这两种数据结构来设计实现。

集合结构:就是数学中所学习的集合。集合中的元素有三个特征:
       1).确定性(集合中的元素必须是确定的)
       2).唯一性(集合中的元素互不相同。例如:集合A={1,a},则a不能等于1)
       3).无序性(集合中的元素没有先后之分),如集合{3,4,5}和{3,5,4}算作同一个集合
       该结构的数据元素间的关系是"属于同一个集合",别无其它关系。
       因为集合中元素关系很弱,数据结构中不对该结构进行研究
线性结构:数据结构中线性结构指的是数据元素之间存在着"一对一"的线性关系的数据结构。  
树状结构:除了一个数据元素(元素 01)以外每个数据元素有且仅有一个直接前驱元素,但是可以有多个直接后续元素。
特点是数据元素之间是 1 对 多的联系
      网络结构:每个数据元素可以有多个直接前驱元素,也可以有多个直接后续元素。特点是数据元素之间是多对 多 的联系

问题:1个班的学生是什么逻辑结构呢?

数据的存储结构

数据的存储结构主要包括数据元素本身的存储以及数据元素之间关系表示,是数据的逻辑结构在计算机中的表示。
常见的存储结构有顺序存储,链式存储,索引存储,以及散列存储。
 
顺序存储结构:把逻辑上相邻的节点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。
由此得到的存储结构为顺序存储结构,通常顺序存储结构是借助于计算机程序设计语言(例如C/C++)的数组来描述的。  
(数据元素的存储对应于一块连续的存储空间,数据元素之间的前驱和后续关系通过数据元素,在存储器中的相对位置来反映)
       
优点:是节省存储空间,因为分配给数据的存储单元全用存放结点的数据(不考虑c/c++语言中数组需指定大小的情况),结点之间的逻辑关系没有占用额外的存储空间。
采用这种方法时,可实现对结点的随机存取,即每一个结点对应一个序号,由该序号可以直接计算出来结点的存储地址。
缺点:

1.插入和删除操作需要移动元素,效率较低。

2.必须提前分配固定数量的空间,如果存储元素少,可能导致空闲浪费   。

链式存储结构:数据元素的存储对应的是不连续的存储空间,每个存储节点对应一个需要存储的数据元素。
       每个结点是由数据域和指针域组成。 元素之间的逻辑关系通过存储节点之间的链接关系反映出来。
缺点:
1、比顺序存储结构的存储密度小 (每个节点都由数据域和指针域组成,所以相同空间内假设全存满的话顺序比链式存储更多)。  
2、逻辑上相邻的节点物理上不必相邻。

优点:

1、插入、删除灵活 (不必移动节点,只要改变节点中的指针)。
2、查找结点时链式存储要比顺序存储慢。

索引存储结构:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。
       比如图书、字典的目录

散列存储结构:根据结点的关键字直接计算出该结点的存储地址
一种神奇的结构,添加、查询速度快。

-----------

================================================================================================

举例:
线性表的逻辑结构如图所示:

线性表逻辑结构对应的顺序存储结构为顺序表,对应的链式存储结构为链表。
       顺序表


       
链表

同一逻辑结构可以对应多种存储结构。
同样的运算,在不同的存储结构中,其实现过程是不同的

数据的逻辑结构(线性结构、非线性结构;集合结构、树状结构、网状结构),数据的存储结构(顺序结构、链式结构、索引结构、散列结构)相关推荐

  1. 数据的逻辑结构(线性结构、非线性结构;集合结构、线性结构、树状结构、网状结构),数据的存储结构(顺序结构、链式结构、索引结构、散列结构)

    数据的逻辑结构 数据的逻辑结构指数据元素之间的逻辑关系(和实现无关). 分类1:线性结构和非线性结构 线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继. ...

  2. 数据结构(顺序结构、链式结构、索引结构、散列结构)

    文章目录 1.概述 2.数据间逻辑关系 3.数据的存储结构(或物理结构) 3.1顺序结构 3.2链式结构 3.3索引结构 3.4散列结构 4.运算结构 1.概述 数据结构,就是一种程序设计优化的方法论 ...

  3. 链表list(链式存储结构实现)_数据结构知否知否系列之 — 线性表的顺序与链式存储篇(8000 多字长文)...

    从不浪费时间的人,没有工夫抱怨时间不够. -- 杰弗逊 线性表是由 n 个数据元素组成的有限序列,也是最基本.最简单.最常用的一种数据结构. 作者简介:五月君,Nodejs Developer,热爱技 ...

  4. 数据结构 | C语言实现线性表的顺序和链式结构

    线性表的顺序表示 线性表的顺序表示,是通过构造一个结构体实现的.结构体内包含一个定长数组和一个顺序表的长度.一维数组可以是静态分配或者是动态分配的.这里使用的是静态分配的方法. 代码如下: #incl ...

  5. 线性表的顺序、链式存储结构基本操作

    线性表的抽象数据类型 operation InitList(&L):初始化操作,建立一个空的线性表L ListEmpty(L):若线性表为空,返回true,否则返回false ClearLis ...

  6. vue项目结合iview4UI组件实现树状结构及复杂动态表头列表 Tree-Table 及复杂header 省市区树状表格联动 数据优化后台一次性返回一万条数据页面卡死问题

    一.首先看看需求最终效果图,该需求总共罗列以下几点 最左侧采用树状结构将地址省市区县街道展示出来,并且控制名称长度限制,多余的用省略号表示,鼠标悬浮上去名称展示出来 列表默认展示市一级数据,县及街道数 ...

  7. 串--串的定义,顺序、链式存储结构,BF、KMP模式匹配算法(C语言描述)

    此文章仅作为自己学习过程中的记录和总结,同时会有意地去用英文来做笔记,一些术语的英译不太准确,内容如有错漏也请多指教,谢谢! 一.串(String)的定义: 串(String):由零个或多个字符组成的 ...

  8. 【数据结构】 实验报告10 顺序、链式存储结构的二叉树递归遍历、层次遍历求高度

    一.实验目的和要求 (源码在最后) 要求: 两种及以上存储结构(建议 顺序存储结构和链式存储结构各一).两种及以上方法(建议 递归遍历和层次遍历方法各一).分析各代码性能. 抽象数据类型(二叉树)独立 ...

  9. 顺序、链式结构的个人书籍管理系统(C++)

    仅供课外学习使用,任何个人与机构不得利用此文章进行任何形式的作弊. 因上一作浏览量激增,不胜惶恐.故上传新版,恳请各路大神赐教. 个人书籍管理系统的编写.制作与实现(C语言) 项目要求 设计一个图书管 ...

最新文章

  1. L1-044 稳赢 (暴力法)
  2. java memcachedclient_Java memcached client怎样建立长连接
  3. blue pill Flash 128KB的传言
  4. ST17H26开发小总结
  5. kong组件_Kong插件开发工具包
  6. leetcode714.买卖股票的
  7. pytorch中RNN注意事项(关于input和output维度)
  8. python工程师工资多少-最新 | 2019年Python工程师的平均薪资是多少?
  9. php大小写转换,php中字母大小写转换函数
  10. 互联网日报 | 腾讯地图全国上线聚合打车服务;国庆档首日票房突破7亿;特斯拉国产Model3再降价...
  11. EF Core 日志跟踪sql语句
  12. python群发邮件
  13. 项目上传图片报:Can't create output stream!
  14. spring java 发送邮箱验证
  15. 不是所有物联网平台都适合系统集成
  16. 怎么注册美国域名,要注意什么呢?
  17. hadoop与java中数据类型转换
  18. Error evaluating解决xpression ‘ew.sqlSegment != null and ew.sqlSegment != ‘‘ and ew.nonEmptyOfWhere‘.
  19. 计算机读卡器突然无法识别,win7识别不了读卡器怎么解决?win7电脑识别不了读卡器的解决方法...
  20. 千万不要告诉别人自己的绩效!某面试官觉得求职者表现不错,找熟人打听他离职原因,听说因为绩效低被劝退,决定不要他了!...

热门文章

  1. 少儿重疾险排名的选择与注意事项
  2. 算法进阶面试题07——求子数组的最大异或和(前缀树)、换钱的方法数(递归改dp最全套路解说)、纸牌博弈、机器人行走问题
  3. 使用Easy Excel导入数据,性别为男女,数据库值为0、1
  4. netlink实现驱动和应用层通信
  5. DeepStream 快速入门
  6. 计算机锁屏域策略,域组策略锁屏界面设置不生效
  7. Huffman Codes
  8. Python科学计算-Numpy和Pandas学习笔记(二)-Numpy的基本运算(chaochao`s Blog)
  9. 阿里云 ECS 7 天实践训练营 - day01 -基于ECS搭建FTP服务
  10. 《大明王朝》阴谋诡计,下三路招呼