数据结构和抽象数据类型

数据结构

数据结构是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率的算法。

举例:现在有一些书架,还有一堆图书,你要怎样把它们放到书架上去呢?换言之说,有一堆数据,给了你一些存储空间,你要怎么把这些数据存起来呢?

一、关于数据对象的逻辑结构

比如说,我们一开始把书架想象成简单的一长条,这么一层的架子,然后所有的书是一个一个挨着放的,除了一头一尾的书以外,每一本书的前面和后面都只有一本书,如果每一本书都有一个编号的话,那么这一个编号对应的就是一本书,那么这种结构是一对一的结构,我们管它叫线性结构。

另外一种组织方式就是先把图书分类,如果我给每一个类一个编号的话,那么这一个类别的编号里面对应着很多本书,那么这是一个一对多的逻辑结构,这个结构有个名字叫做树。

再说图书馆,假设我们还统计这样一些信息:这一本书都有那些人买过,买了这本书的人还买过其它的什么书,于是呢,其实是一本书对应着很多人,而一个人又对应了很多本书,这是一个多对多的、很复杂的一个关系网,那么这个关系网对应的逻辑结构叫叫做图

二、关于对象的物理存储结构

除了逻辑结构之外,我们还有数据对象再计算机里面的物理存储结构,也就是我们说的这些逻辑结构在机器的内存里到底要怎么放,是连续放呢还是东一个西一个隔开放呢?也就是说用一个数组来存它呢,还是用一个链表来存它呢?这个就属于物理存储结构。

抽象数据类型(ADT)

数据类型,它包含了两个东西,一个是“数据对象集”,就是我们说的“是什么东西”,第二个是“数据集合相关联的操作集”,对数据的操作。类似于Java的类,把这个数据集跟它相关的操作集封装在一个类里面。

抽象,抽象的意思就是“不具体”,就是说,描述数据类型的方法是不依赖于具体的实现的。

例子:比如栈和队列这两种数据结构,分别使用了数组和链表来实现,比如栈,对于使用者只需要知道pop()和push()方法或其它方法的存在以及如何使用即可,使用者不需要知道使用的数组或是链表来实现的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值