栈和队列基本知识

栈(Stack)队列(Queue) 是两种基本的数据结构,各自具有不同的操作规则和应用场景。

栈(Stack)

  • 操作规则:遵循“后进先出”(LIFO, Last In First Out)原则。
  • 主要操作
    • Push:将元素压入栈中。
    • Pop:从栈顶弹出元素。
    • Peek/Top:查看栈顶元素但不弹出。
    • IsEmpty:检查栈是否为空。

应用示例

  • 函数调用的管理(调用栈)。
  • 浏览器的历史记录管理(回退操作)。

队列(Queue)

  • 操作规则:遵循“先进先出”(FIFO, First In First Out)原则。
  • 主要操作
    • Enqueue:将元素加入队列的尾部。
    • Dequeue:从队列的头部移除元素。
    • Front/Peek:查看队列的头部元素但不移除。
    • IsEmpty:检查队列是否为空。

用队列实现栈 

push(x: int) -> None:
将元素 x 加入 queue2。
将 queue1 中的所有元素移动到 queue2 中。
交换 queue1 和 queue2 的引用,使 queue1 始终保持栈的顺序。
pop() -> int:
从 queue1 中弹出并返回元素(这是栈顶元素)。
top() -> int:
返回 queue1 的前端元素(栈顶元素),但不弹出它。
empty() -> bool:
判断 queue1 是否为空来确定栈是否为空。

逆波兰表达式求值 

处理操作数:直接推入栈中。
处理运算符:弹出栈顶的两个操作数,进行计算,然后将结果推入栈中。对于除法,int(a / b) 保证了向零截断的效果。
结果返回:栈中最后剩下的值就是最终结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值