棧的應用 -洛谷P1449

阿爾法豆發表於2020-12-10

棧特點——先進後出

本題可以使用棧來解決

遇到數字就入棧

遇到符號就出棧、並運算

再把運算後的結果入棧
#include<bits/stdc++.h>
using namespace std;
stackq;
string c;

int main()
{
cin>>c;
int a=0,b=0;
int i,j;
for(int k=0;k<c.length();k++)
{
if(c[k]’@’) break;
else if(c[k]<=‘9’&&c[k]>=‘0’){
a=b*10+c[k]-‘0’;
b=a;
}//讀入字串並轉化為數字
else if(c[k]
’.’){
q.push(a);//壓棧,把a存進棧底
b=0,a=0;
}

	else{

		if(c[k]=='-') i=q.top(),q.pop(),j=q.top(),q.pop(), q.push(j-i);//取出棧頂前兩個數字,運算
		if(c[k]=='+') i=q.top(),q.pop(),j=q.top(),q.pop(), q.push(j+i);
		if(c[k]=='*') i=q.top(),q.pop(),j=q.top(),q.pop(), q.push(j*i);
		if(c[k]=='/') i=q.top(),q.pop(),j=q.top(),q.pop(), q.push(j/i);
	}
}
cout<<q.top()<<endl;

}