抽象数据类型ADT(栈与队列)

抽象数据类型 abstract data type,ADT:

指只通过接口进行访问的数据类型,我们将那些使用ADT的程序叫做客户,将那些确定数据类型的程序叫做实现。

数据的表示和实现操作函数都在接口的实现里面,和客户完全分离。接口对于我们来说是不透明的:客户不能通过接口看到方法的实现。

优点:

  1. 将编程时对数据的概念转换从任何特定的数据表示和算法实现中分离出来。
  2. 使用抽象机制可以让我们关心程序如何实现的细节上得到解放。
  3. 当程序的性能重要时,我们需要知道基本操作的开销。


栈ADT的实现

栈ADT的实现有两种方式,一是数组实现,二是链表实现。

使用数组实现时,将数据项放进数组中,记录栈顶位置的下标。进行进栈push操作时,只要把项存放到栈顶下标所指示的位置即可,然后下标增1;进行弹栈pop操作时,使下标减1,并返回它所指示的项。初始Initialize操作包含分配指定大小数组,测试是否为空empty操作包含检查下标是否为0.

数组实现的缺点是在使用之前需要知道数组的最大长度,这样才能分配内存。

使用链表实现时,对于pop操作,删除链表表头元素,并返回其项;对于push操作,创建一个节点,然后把其添加到表头。


下推栈的数组实现

当栈中有N个项时,这一实现把这些项保存在s[0],...,s[N-1]中,按照最近插入的顺序排列。栈顶(下一个进栈元素将要占据的位置&#x

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值