栈的基本操作(c++题解)

题目描述

栈:插入元素和删除元素只能在线性表的一端进行,所以遵循“先进后出 (LIFO) ”原则,其中插入和删除的一端称为栈顶 (top)。我们可以把栈比喻成一个箱子,只能在箱子的开口处放入和取出物体,而且是后放入的物体,会被先取出来。

输入格式

第 1 行一个整数 n,表示有  条关于n  的操作s,在进行任何操作之前, s是空的。接来的 n 行,每行 一个关于s  的操作,格式和含义如下:

clear:把栈置空。

empty:判断栈是否为空。

push(x):把整数 x 插入栈顶。

pop: 栈顶元素出栈。

top :获取栈顶元素的值。

输出格式

若干行,对应输入中的 top, pop 和 empty 操作:

对于 top 操作,输出一个整数,如果这个操作失败,则输出单词 error。

对于 pop 操作,如果这个操作失败,则输出单词 error。

对于 empty 操作,如果栈是空,则输出 empty,否则输出 not empty。

样例

样例输入
复制8
push 10
top
push 15
pop
top
clear
pop
empty
样例输出
复制10
10
error
empty

_____________________________________________________________________________

日常发作业题解。 

写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

_____________________________________________________________________________

#include <bits/stdc++.h>
using namespace std;
int n,idx=0,y;
string x;
int stk[100005];
void push(int x){
	stk[idx++]=x;
}
int top(){
	return stk[idx-1];
}
void pop(){
	idx--;
}
bool empty(){
	return idx==0;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
    	cin>>x;
    	if(x[0]=='p'&&x[1]=='u'){
    		cin>>y;
    		push(y);
		}else if(x[0]=='p'){
			if(idx==0)cout<<"error\n";
			else pop();
		}else if(x[0]=='t'){
			if(idx==0)cout<<"error\n";
			else cout<<top()<<endl;
		}else if(x[0]=='e'){
			if(idx==0)cout<<"empty\n";
			else cout<<"not empty\n";
		}else if(x[0]=='c'){
			idx=0;
		}
	}
	
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值