前言

哦!竟然是可爱的栈。

也许没有比栈简单的数据结构了……

正文

栈的特点

栈( 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;
    }
}; 
posted @ 2026-04-05 18:23  fede  阅读(8)  评论(0)    收藏  举报
联系我们