栈与队列
2023-08-20 14:54:06
发布于:河北
栈:
代码(模拟栈操作):
/*给出 n 种栈操作,包括:
(1)push x ,将整数 x 入栈;
(2)pop,弃栈顶,成功则输出 pop x,否则输出 pop fail
(3)top,取栈顶,成功则输出 top = x,否则输出 top fail
(4)size,求栈内元素数,输出 size = x
(5)empty,询问栈是否为空,为空则输出 yes,否则输出 no
*/
#include<bits/stdc++.h>
using namespace std;
int n,x;
int zhan[505],_top;
//定义函数
void push(int x)//将x入栈
{
zhan[++_top]=x;
}
void pop()//弃栈顶
{
_top--;
}
bool empty()//询问栈是否为空
{
return _top == 0;
}
int top()//取栈顶
{
return zhan[_top];
}
int size()//求栈内元素数
{
return _top;
}
int main()
{
cin>>n;
while(n--)//while循环执行n次
{
string s;
cin>>s;
if(s == "push")//将整数x入栈
{
cin>>x;
push(x);
}
else if(s == "pop")//弃栈顶,成功则输出 pop x,否则输出 pop fail
{
if(empty())
{
puts("pop fail");
}
else
{
cout<<"pop "<<top()<<endl;
pop();
}
}
else if(s=="top")//取栈顶,成功则输出 top = x,否则输出 top fail
{
if(empty())
{
puts("top fail");
}
else
{
cout<<"top = "<<top()<<endl;
}
}
else if(s=="size")//求栈内元素数,输出 size = x
{
cout<<"size = "<<size()<<endl;
}
else if(s=="empty")//询问栈是否为空,为空则输出 yes,否则输出 no
{
if(empty())
{
puts("yes");
}
else
{
puts("no");
}
}
}
return 0;
}
stack与queue操作栈:
stack:
头文件:
#include<stack>
储存空间:
stack<数据类型> s;
入栈/入队:
s.push(data);
出栈/出队:
s.pop();
关键元素:
s.top();
判空:
s.empty();
queue:
头文件:
#inlcude<queue>
储存空间:
queue<数据类型> q;
入栈/入队:
q.push(data);
出栈/出队:
q.pop;
关键元素:
队头元素:
q.front();
队尾元素:
q.back();
判空:
q.empty();
队列:
优先队列:
priority_queue
↓ ↓
优先 队列
这里空空如也
有帮助,赞一个