数据结构小白系列之数据结构概述

更多文章,欢迎关注微信公众号:深夜程猿


什么是数据结构

数据结构,是数据的组织形式, 包括数据元素本身以及数据元素之间的关系,公式可表示为Data_Structure={D, R},其中D表示数据,R表示关系。 数据结构具有逻辑结构和物理结构

逻辑结构

逻辑结构是数据和数据之间的逻辑关系,实际就是它们之间的位置关系。比如数据A和数据B,数据A和数据B是相邻着存储着,数据A存储在数据B前面。这样数据A数据B的逻辑关系就是相邻的并且A在B前面。(但是实际的存储A和B并不一定是物理连续的,因为相同的逻辑结构可以有不同的物理结构存储数据)。

数据的逻辑结构分类:

  • 集合关系:数据结构中的元素都属于同一个数据集合
  • 线性关系:数据结构中的元素存在一对一的相互关系,比如上面说的A元素后面是B元素
  • 树形关系:数据结构中的元素存在一对多关系。比如在数据A前面是数据C,后面是数据B,那么数据A和数据B、C就是一对多的关系
  • 图形关系:数据结构中的元素存在多对多的关系。比如数据A后面是数据B,数据A前面是数据C,数据C前面是数据B,那么数据A、B、C就是多对多关系

下面一张图表示数据的逻辑结构:


物理结构

物理结构是数据在真实磁盘空间上的存储方式,是数据的具体存储方式。一个逻辑结构可以有不同存储方式,也就是一个逻辑结构对应多种物理结构。比如逻辑结构相邻的数据,在物理结构上可以是相邻的(数组存储),也可以是不相邻的(链表存储,通过一种叫做指针的东西连接起来)。下面是百度百科的解释:

“数据的物理结构是数据结构在计算机中的表示(又称映像),它包括数据元素的机内表示和关系的机内表示。由于具体实现的方法有顺序、链接、索引、散列等多种,所以,一种数据结构(这里是指逻辑结构)可表示成一种或多种存储结构。

数据元素的机内表示(映像方法): 用二进制位(bit)的位串表示数据元素。通常称这种位串为节点(node)。当数据元素有若干个数据项组成时,位串中与个数据项对应的子位串称为数据域(data field)。因此,节点是数据元素的机内表示(或机内映像)。

关系的机内表示(映像方法):数据元素之间的关系的机内表示可以分为顺序映像和非顺序映像,常用两种存储结构:顺序存储结构和链式存储结构。顺序映像借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。非顺序映像借助指示元素存储位置的指针(pointer)来表示数据元素之间的逻辑关系。”

物理结构存储方式:

  • 顺序存储
  • 链式存储
  • 索引存储
  • 散列存储

数据结构的分类

数据结构有以下几种分类,不了解的读者只需对名称有个印象即可
  • 集合结构
  • 线性结构:线性表
  • 树形结构:树
  • 图形结构:图

小结

数据结构分为逻辑结构和物理结构,逻辑结构描述的是数据的逻辑关系,比如是相邻的还是不相邻的。物理结构是数据在计算机系统的具体存储形式。一种逻辑结构可以有不同的物理结构实现。

在计算机中,数据采取不同的物理结构存储,需要计算机硬件的支持。

有一句话说,算法+数据结构=程序。这句话是否夸大我们不进行讨论,但是数据结构在我们的程序中起到了非常重要的作用。一个良好的数据结构,可以使得我们的程序更加高效运行,数据存储更加有效。

我们可以这样理解(但不严谨),算法解释了程序如何运行,什么时候做什么都已经定义好了,而数据结构规定了程序的数据如何组织。

什么是程序?程序就是我们使用编程语言编写的源代码文件。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值