目录
栈的概念以及栈的实现
栈是一种只允许在一端进行插入和删除的线性表
空栈:没有任何元素
入栈:插入元素消息
出栈:删除元素
栈本身就是一个线性表,我们可以写一个足够大的数组来实现栈
除此之外,我们还需要变量n来记录栈顶元素和栈的元素个数
我们来实现一下栈
#include <iostream>
using namespace std;
const int N = 1e6;
int st[N];
int n = 0;
void push(int x)
{
st[++n] = x;
}
void pop()
{
--n;
}
int top()
{
return st[n];
}
int size()
{
return n;
}
bool empty()
{
return n == 0;
}
int main()
{
for (int i = 0; i < 10; i++)
{
push(i);
}
while (size())
{
cout << top() << " ";
pop();
}
}
上述代码就是我们栈的实现,我们栈的元素是从数组下标为1开始的,如果栈顶下标是0的话就是空栈
我们入栈是0,1,2,3,4,5,6,7,8,9
出栈的时候就是从9开始弹出
STL 的stack
除了我们的静态的栈,我们stl库里面还有一个现成的栈,叫stack,它的创建和vector实际上是差不多的
我们来测试一下stack
#include <iostream>
#include <stack>
using namespace std;
const int N = 1e6;
stack <int> st;
int main()
{
for(int i =0 ;i<10;i++)
{
st.push(i);
}
while(!st.empty())
{
cout << st.top() << " ";
st.pop();
}
}