数据结构与算法:python语言描述学习(五)

  1. 数据结构
    信息表示A:表示需要求解的某个问题的实例;
    信息表示B:表示与这个实例对应的求解结果。

在这里插入图片描述
2. 数据结构及其分类
信息:要将信息转成计算机能够处理的形式。

数据:现实中:数据就是计算机能够处理的符号形式的总和,或者说是进过编码的信息(信息的编码表示)。

数据结构:研究数据之间关联和组合的形式,总结其中的规律,发掘最值得注意的有用结构。

抽象定义:
一个数据结构:包含一集数据元素,是一个有穷集,在这些元素之间包含某种特定的逻辑联系。一个具体的数据结构就是一个二元组:
D=(E,R)
其中E是数据D的一个元素集合,是一个有穷子集。R表示元素中的某种关系,元素之间的某些性质。其中,关系R没有任何限制。

  1. 典型的数据结构主要有:
    集合结构:最简单的一类数据结构。元素之间没有明确的关系,R为空集。该数据结构是元素的集合,把所有元素当做一个整体。
    序列结构:其元素之间有一个先后的序列关系(顺序关系)。存在一个排位在最前的元素,除了最后一个元素,每一个元素都有唯一的后继元素,所有元素组成一个线性的序列。这种结构也称之为线性结构。每个元素最多只有一个后继元素。

在这里插入图片描述
如图中所示:小圆圈表示元素,箭头代表元素之间的关系,肩头有方向,这说明他们之间的关系是有方向的。

层次结构:数据元素分属于一些不同的层次,每个上层元素可以关联一个或者多个下层元素,关系R形成一种明确的层次性,一般是从上层到下层,也可以跨层。

树形结构:层次结构中最简单的一种关系是树形关系,在一个树形结构中只有一个上层数据元素,称为根。

图结构:元素之间可以有任意复杂的元素联系。图结构也称之为图对象。

  1. 结构性和功能性的数据结构。
    容器、栈、队列、优先队列、队伍、字典等。

  2. 计算机内存
    计算机中直接使用的数据保存在内存储器,称之为内存。内存是CPU可以直接访问的数据存储结构。外部的数据要装入内存CPU才能使用它。

内存的基本结构式是线性结构的存储单元。一个单位可以保存一个字节(8位二进制的代码)的数据。
内存单元具有唯一编号,称为单元地址,简称地址。单元地址从01开始连续排列。
如图所示:
在这里插入图片描述

  1. 对象的访问。
    知道一个对象的标识,就可以直接访问它。访问对象操作可以映射到已知地址访问内存单元。
    如果被访问的是一个组合对象,组合中包含一组元素,这下元素被安排在一块内存存储区域(一块连续的存储区里),而且每个元素的存储量相同。如果要访问组合对象中的元素,知道组合对象的元素存储区位置,知道要访问的元素编号,访问时间操作为O(1)。
    元素存储区内存起始位置内存地址为p,每个元素占用a个存储单元,假设元素序列中,首元素下表为0,要访问下表为k的元素,该元素的地址为lok(a),则公式为:
    lok(k)=p+k*a
    该公式是统一的,只需要进行一次加法和乘法即可。访问所用时间与元素下标无关,与元素个数无关。

另一种情况:
假设组合对象都包含着同样的一组元素,但不同元素的大小可能不同,但是排在同样位置元素大小相同。
根据元素的排列位置可以计算出对象中元素在对象存储中的相对位置,称为元素的存储偏移量。

在这里插入图片描述
如图所示,假设对象o的地址为p,对象中元素ei的偏移量为ri,可以求出ei的地址为P+ri.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椒椒。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值