我想了解這段代碼。它幹什麼它後綴表達式評估。我在理解代碼時遇到問題。如果有人能幫助我,我將非常感激。瞭解後綴表達式評估代碼
#include <iostream>
#include <cstring>
#include <stack>
using namespace std;
int main()
{
//suppose a contains the string..
//n is the length of string...
char a[10]="A+B/C";
int n = strlen(a)
stack<int>s;
for (int i=0;i<n;i++)
{
if (a[i]=='+')
{
s.push(s.pop()+s.pop());
int temp1 = s.top();
s.pop();
int temp2 = s.top();
s.pop();
s.push(temp1 * temp2);
}
if (a[i]=='*')
s.push(s.pop() * s.pop());
if ((a[i]>='0') && (a[i]<='9'))
s.push(0);
while ((a[i]>='0') && (a[i]<='9'))
s.push(10*s.pop()+(a[i++]-'0'));
}
cout<<s.pop()<<endl;
return 0;
}
在此先感謝。
你寫過'a'的例子嗎?因爲它不是後綴。 –
什麼問題? – AJG85
stack :: pop()是一個void函數。 這段代碼亂七八糟。只需在SO上搜索後綴計算器,您就會發現這個 –
sehe