关于数据结构的一点思考

当我们想要彻底向他人介绍清楚所采用的数据结构的时候,需要解释清楚三方面的问题:一是所采用的物理结构,即数据以怎样的方式存储,是顺序存储,还是链式存储(唯二的两种);二是所采用的逻辑结构,即数据之间的关系是怎样的,是线性的还是非线性的;三是定义在该结构上的操作都有哪些,比如“线性表”有插入,删除,查找的操作,“栈”有出栈,入栈等操作等。

或许有人只记得数据结构有物理结构和逻辑结构两个方面,却忽略了“可以执行的操作”这个方面,其实“可以执行的操作”也是必不可少的,比如“栈”和“队列”这两种数据结构,如果都使用相同的顺序存储,同时这两个的逻辑结构当然都是线性的,为什么还是属于不同的数据结构呢?因为这两个结构之上的操作具有不同的行为

如果想要描述物理结构,一个常见的说法可能是,“这棵树我使用了数组来存储”、“这个队列我使用了链表来存储”。这样的表述确实可以说明其物理结构是什么(顺序存储 OR 链式存储),但是却有一个弊端,会让人以为“数组”和“链表”属于描述物理结构的专属术语。

其实,“数组”应该代表的是物理结构采用顺序存储,逻辑结构为线性的,在该结构上定了了插入,删除,查找操作的一种线性表“数据结构”;“链表”应该代表的是物理结构采用链式存储,逻辑结构为线性的,在该结构上定了了插入,删除,查找操作的一种线性表“数据结构”。当我们提及“数组”或者“链表”的时候,提及的是具体的一种“数据结构”类型(参见表1),而不是仅仅描述一种物理结构。如果我们想要描述物理结构,推荐的描述方式是直接说采用的是顺序存储,或者是链式存储。比如:我采用顺序存储的方式(说明了物理结构),实现了一颗树(说明了逻辑结构)。

常见的数据结构类型
当然,这种描述物理结构的方式,并不是大家都会采用的,所以还是要根据上下文来判断,某句话中提到的“数组”或者“链表”到底是在描述一种物理结构,还是指的是一种具体的线性表数据结构。

有时,当我们谈起某一种数据结构的时候,比如“采用了图数据结构”、“采用了树数据结构”、“采用了队列这种数据结构”,其实我们对外透露的是采用的逻辑结构(线性OR 非线性)以及该结构上所能进行的操作。而采用了何种物理结构却不能从中获悉。但如果我们说“使用了数组”或者“使用了链表”,那就把物理结构,逻辑结构,以及可以进行的操作都交代清楚了。从这个角度来看,数组和链表确实要比其他数据结构更基础(因为没有使用链式存储的数组,也没有使用顺序存储的链表)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值