$\color{green}{<–画图不易,点下这里赞一下吧}$
数组模拟栈:
-
用top表示栈顶所在的索引。初始时,top = -1。表示没有元素。
-
push x :栈顶所在索引往后移动一格,然后放入x。st[++top] = x。
-
pop : top 往前移动一格。top–。
-
empty :top 大于等于 0 栈非空,小于 0 栈空。top == -1 ? “YES” : “NO”
-
query : 返回栈顶元素。st[top]
#include <iostream>
using namespace std;
const int N = 100010;
int st[N];
int top = -1;
int n;
int main()
{
cin >> n;
while(n--)
{
string s;
cin >> s;
//栈顶所在索引往后移动一格,然后放入x。
if(s == "push")
{
int a;
cin >> a;
st[++top] = a;
}
//往前移动一格
if(s == "pop")
{
top --;
}
//返回栈顶元素
if(s == "query")
{
cout << st[top] << endl;
}
//大于等于 0 栈非空,小于 0 栈空
if(s == "empty")
{
cout << (top == -1 ? "YES" : "NO") << endl;
}
}
}
在下面贴一个STL,权当复习用
结合y总和海绵宝宝总结,我自己也总结了一份栈模板的图文讲解:
https://blog.csdn.net/2301_80026901/article/details/134151893
期待家人们支持一下,如果有什么错误的地方还希望能够告知下作者非常感谢,同时感谢海绵宝宝的分享。
喜欢海绵宝宝
想问一下为什么不用vector容器来模拟栈而要用数组呢,用vector能节约内存吧
还得是海绵宝宝啊
…
#include[HTML_REMOVED]
using namespace std;
const int N=100010;
int tt,skt[N];
void push(int x)
{
}
void pop()
{
tt–;
}
bool isempty()
{
if(tt=0)
return true;
else
return false;
}
int query()
{
return skt[tt];
}
int main()
{
int m;
cin>>m;
while(m–)
{ int x;
string op;
cin>>op;
if(op==”push”)
{
cin>>x;
push(x);
}
…
大佬帮我看看哪里出问题了
问一下理论上top与top有什么区别?(输出结果不一样)
说具体点
top 与top
加加top与 top加加
https://zhuanlan.zhihu.com/p/391942337
爱了爱了
这样写比top = 0 更清晰,top 比top更好
push