题目描述
实现一个栈,包括push、pop、empty、query操作;用数组模拟;
样例
10
push 5
query
push 6
pop
query
pop
empty
push 4
query
empty
算法1
数组模拟(函数版)
将每个操作封装成函数,各个接口与栈数据类型内置函数一致
C++ 代码
#include<iostream>
using namespace std;
const int N = 1e5+2;
int a[N];
int top;
void init(){
top = -1;
}
void push(int x){
a[++top] = x;
}
void pop(){
if(top != -1)
--top;
}
bool empty(){
return top == -1;
}
int query(){
return a[top];
}
int main()
{
int m;
cin>>m;
init();
string order;
int x;
while(m--){
cin>>order;
if(order == "push"){ //使用if的原因是switch不接受string类型变量;
cin>>x;
push(x);
}else if(order == "pop")
pop();
else if(order == "empty"){
cout<< (empty() ? "YES" : "NO")<< endl; //cout使用条件运算符一定要括起来;
}else
cout<< query() <<endl;
}
}
算法2
数组模拟(精简版)
就是把函数里的内容拿出来放进判断语句中;
C++ 代码
#include<iostream>
using namespace std;
const int N = 1e5+2;
int a[N];
int top = -1;
int main()
{
int m;
cin>>m;
string order;
int x;
while(m--){
cin>>order;
if(order == "push"){
cin>>x;
a[++top] = x;
}else if(order == "pop")
--top;
else if(order == "empty"){
cout<< (top == -1 ? "YES" : "NO")<< endl;
}else
cout<< a[top] <<endl;
}
return 0;
}