栈是一种只能在一端进行插入和删除操作的特殊的线性表。栈按照先进后出的原则存储数据,类似于往箱子里装物品,先进入的数据被压入栈底,最后的数据在栈顶。
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...来遍历,因为它是不可迭代的