栈
前言
哦!竟然是可爱的栈。
也许没有比栈简单的数据结构了……
正文
栈的特点
栈( stack )的特点是“先进后出”。
栈只有唯一的一个出入口,从这个口进入,也从这个口弹出,这是它与队列最大的区别。
队列有一个入口和一个出口,所以手写栈比手写队列更简单。
注意事项
编程中常用递归就是用栈来实现的。
栈需要用空间存储,如果栈的深度太大,或者存进栈的数组太大,那么总数会超过系统为栈分配的空间,就会导致栈溢出。
这是递归的主要问题,递归深度要注意。
栈的实现
编码时常用 STL stack,或自己手写栈。
为避免爆栈,需要控制栈的大小。
STL stack
STL stack 的有关操作如下表:
| 操作 | 说明 |
|---|---|
stack<Type> s |
定义栈,Type为数据类型 |
s.push(item) |
把 item 放到栈顶 |
s.top() |
返回栈顶的元素 |
s.pop() |
删除栈顶的元素 |
s.size() |
返回栈中元素个数 |
s.empty() |
检查栈是否为空,如果为空则返回 true,否则返回 false。 |
手写栈
手写栈代码简单且省空间。
struct Stack{
int a[N]; //可以选择不同的类型和栈的大小
int tot=0;
void push(int x){
a[++tot]=x;
return ;
}
int top(){
return a[tot];
}
void pop(){
t--;
return ;
}
bool empty(){
return t==0?true:false;
}
};

浙公网安备 33010602011771号