栈是一种数据结构,通常用来解决数据先进后出,也就是First IN Last Out(FILO)的问题,举个例子帮助理解:
A,B,C三人参加一场考试。收卷顺序是A,B,C,如图:
不难发现最早交卷的A同学被排在最后一个改,而最后一个交卷的B同学却是第一个改。这就是经典的栈结构。
栈的定义有两种方式,一种是手写,一种是调用STL库,这里我会分别给出代码。
手写:
#include <bits/stdc++.h>
using namespace std;
int _stack[1005],head;
void _push(int x)
{
_stack[head++]=x;
}//将x压入栈
void _pop()
{
head--;
}//弹出
int _top)
{
return _stack[head-1];
}//查询栈首
bool _empty()
{
return head==0;
}//是否为空
int _size()
{
return head;
}//栈的长度
int main()
{
_push(1),_push(2),_push(3);
printf("%d %d\n",_top(),_size());
_pop(),_pop(),_pop();
printf("%d",_empty());
return 0;
}
STL:
#include <bits/stdc++.h>
using namespace std;
stack <int> a;
int main()
{
a.push(1),a.push(2),a.push(3);
printf("%d %d\n",a.top(),a.size());
a.pop(),a.pop(),a.pop();
printf("%d",a.empty());
return 0;
}