5、Ruby 数据结构与算法之栈

Ruby 数据结构与算法之栈

1. 栈的简介

栈在生活中有许多物理隐喻,比如抽屉里的衬衫、盘子架上的盘子、死胡同里的火车车厢等等。栈的基本特征是它是有序的,并且对它的访问仅限于一端。

栈是一种容器,它按顺序存储一系列元素,只能在一端(称为栈顶)对元素进行访问、插入或删除操作。栈也被称为后进先出(LIFO)列表。在计算机领域,栈非常重要,因为它在递归处理中有广泛的应用,如语言解析、表达式求值、运行时函数调用管理等。

2. 栈的抽象数据类型(ADT)

栈是一种容器,它可以容纳某种类型的值。我们将其称为类型 T 的栈 ADT,其中 T 是栈中元素的类型。该类型的载体集是所有包含类型 T 元素的栈的集合,包括空栈、包含一个类型 T 元素的栈、包含两个类型 T 元素的栈等等。栈 ADT 的基本操作如下,其中 s 是类型 T 的栈,e 是类型 T 的值。如果操作的前置条件不满足,其结果是未定义的:
- push(s, e) :返回一个新的栈,该栈与 s 相同,只是在 s 的顶部添加了元素 e。
- pop(s) :移除栈 s 的顶部元素,并返回移除元素后得到的栈。此操作的前置条件是栈 s 不为空。
- empty?(s) :若栈 s 为空,则返回布尔值 true,否则返回 false。
- top(s) :返回栈 s 的顶部元素,但不将其移除。与 pop() 操作一样,该操作的前置条件是栈 s 不为空。

除了上述栈 ADT 操作说明中提到的前置条件断言外,我们还

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值