栈(C++的stack、Java的Stack、Python的LifoQueue)

文章目录

栈是一种只能在一端进行插入和删除操作的特殊的线性表。栈按照先进后出的原则存储数据,类似于往箱子里装物品,先进入的数据被压入栈底,最后的数据在栈顶。

C++

C++中的栈是stack,需要#include <stack>,定义格式为:stack<typename> name;
typename可以是任何基本类型,例如 int、double、char、vector、set等。下面以stack为例。

stack<int> st;  // 创建栈
for (int i = 1; i < 6; i++){
    st.push(i); // 压元素入栈
}

st.pop();       // 元素弹出栈

int t = st.top(); // 获取栈顶元素
int sz = st.size(); // 获取栈长度
bool flag = st.empty(); // 返回栈是否为空

// stack不能通过for auto来遍历,因为它是不可迭代的

Java

Java中的栈是Stack,需要import java.util.Stack; 下面以Stack为例。

Stack<Integer> st = new Stack<Integer>(); // 创建栈

for (int i = 1; i < 6; i++){
    st.push(i); // 压元素入栈
}

int t1 = st.pop();  // 获取栈顶元素,并删除

int t2 = st.peek(); // 获取栈顶元素,不删除
int pos = st.search(3); // 获取某个值的位置,计数从1开始
int sz = st.size(); // 获取栈长度
boolean flag = st.empty(); // 返回栈是否为空

// 遍历栈
for (int i: st){
    System.out.println(i);
}

Python

Python中的栈是包queue中的LifoQueue,使用方法和Queue(队列)一样,只是元素出栈的顺序不一样,LifoQueue代表Last In First Out(LIFO,后进先出)。也可以直接用列表list来作为栈使用,其.append()方法和.pop()方法即对应入栈和出栈。

from queue import LifoQueue  # 导入包
lq = LifoQueue()      # 创建栈
for i in range(1, 6):
    lq.put(i)       # 压元素入栈

print(lq.get())     # 栈顶元素出栈

print(lq.qsize())   # 获取栈长度
print(lq.empty())   # 返回栈是否为空

# LifoQueue不能通过for...in...来遍历,因为它是不可迭代的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值