数据结构的基本概念

程序=数据结构(加工对象)+算法(灵魂)

首先我们来区分一下数据(data),数据元素(data element),数据项(data item)之间的区别
数据—>能够被计算机识别,存储,处理的数据的集合(包括数字,字符,图像,等信息)
数据元素---->是数据的基本单位,具有完整确定的实际意义
数据项---->构成数据元素的项目,是具有独立含义最小的标识单位
三者之间关系的区分
三者之间的关系有一个及其便于理解的区分方式
我们可以把数据类比作班级成绩单,上面有所有人的成绩
我们可以把数据元素类比作班级成绩单中某一个同学的成绩,比如说小红的成绩,这一列含有小红的各科成绩
我们可以把数据项类比做班级成绩单中小红的成绩的某一科比如物理的成绩或者化学的成绩,就是某一科的成绩
我们用下面这张图来表示可能更容易理解
在这里插入图片描述
比如如上图所示,整张表记录的就是一个班级的所有同学的成绩,这就是一个数据
而其中的某一行,某一个同学的具体的每一科的成绩就是一个数据元素
而比如说张三同学,它的语文成绩,或者数学成绩,或者是c语言的成绩就是一个具体的数据项
那个问题又出现了:什么是数据结构那?
我们可以这样理解:数据结构是相互之间存在一种或者多种特定关系数据元素的集合,这儿的数据元素可以为数值也可以为非数值,表示为Data_Structure=(D,S),其中的Data表示的是元素有限集,而其中的Structure表示的是关系有限集
那么我们为什么要学习数据结构那?
我是这样认为的,计算机中的运算包括两部分,数值型的运算以及非数值型的运算,对于数值型的运算,我们使用方程式可以进行解决,而对于非数值的运算(表,图,树),我们就必须使用数据结构的方式来进行解决了.
相同的程序,使用不同的数据结构,得到的结果也是不相同的
什么叫做数据的逻辑结构?
数据的逻辑结构指的就是数据之间的逻辑关系.这种方式指的就是从逻辑关系上来描述数据之间的关系,在这种描述方式之下,强调的是数据与数据之间的逻辑关系,而不强调数据的存储关系.
数据的逻辑关系我们可以把它分为4类
在这里插入图片描述
下面我们来进行一组练习
在这里插入图片描述
在线性结构中,第一个结点是(没有前驱结点的),其中每个结点有且只有一个前去结点,最后一个结点(没有)后续结点,其余每个结点有且只有一个后续结点
在树形结构中,树根结点没有(前驱)结点,其余每个结点都有()前驱结点,叶子结点没有(后续)结点,其余每个结点的后续结点可以有(任意多个后续结点)
在图形结构中,每一个结点的前驱结点和后继结点可以有任意多个
让我们来看一个题目
eg:在这里插入图片描述
在这里插入图片描述
首先它们是属于线性结构,用图形表示为 b-------->c------>a------>e------->f------->d
在这里插入图片描述
上述表达式用图形可以表示为:
在这里插入图片描述
所以很明显上图的关系是非线性的
数据的物理结构
数据的物理结构也称为数据的存储结构,是数据的逻辑结构在计算机存储器内部的表示方式,它是依赖于计算机的.
存储结构分为四大类
顺序 链式 索引 散列
顺序存储映像—>顺序存储结构
就是按照元素在存储器中相应的位置来表示元素之间的关系
非顺序映像---->非顺序存储结构
用指针的方式来表示元素之间的存储关系
下面我们用两幅图来理解顺序存储以及链式存储
顺序存储
在这里插入图片描述
我们可以看到上图数据的存储是按照顺序进行的,即存储内容是相连接的,然后根据存储内容,其存储的地址也是根据存储内容的形式来决定的,每个元素存储地址的差距其实本质上还是由数据类型来决定的
下面这种图则反映了链式存储的具体情况
在这里插入图片描述
我们可以看到在链式存储结构中,出现了头指针,其中保存的就是第一个元素的位置,它也决定了链式存储过程中的起始位置,我们可以看到在链式存储结构中每个数据都是由两部分组成的,前半部分保存的是数据的存储内容,后半部分保存的是指针(指向下一个元素的存储位置)
在这里插入图片描述
在这里插入图片描述
上面的这种存储方式就是顺序存储方式,我们可以看到复数分两部分来进行存储,因为是顺序存储结构,所以实数部分与虚数部分的存储位置就是紧挨着的.
而法2就是链式存储结构先存储实数部分,然后紧挨着的部分存储的是实数部分的指针,而这个指针指向的位置就是虚数部分的存储位置
逻辑结构与存储结构是密切相关的

我们需要牢记这样一句话

算法的设计取决于逻辑结构
算法的实现取决于存储结构
什么是数据的运算?
数据在逻辑结构上定义的操作算法,在数据的存储结构上进行实现.
我们最常使用的数据运算也就五种
增 删 改 查 排

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值