我无法从类中的其他push和pop函数访问我的'arr'变量。获取错误“'arr'未在此范围内声明”。它应该可以在课堂上访问。我可以静态地分配内存作为解决方案,但我想试试这个。
该程序提供反向抛光表示法。 输入 1 (A + B) O / P AB +
#include <iostream>
#include <string>
using namespace std;
class stackOperations{
private:
int top = -1 ;
public:
void allocate(int len){
char *arr = new char[len] ;
}
void deallocate(){
delete []arr ;
}
void push(char x){
top++;
arr[top] = x ;
}
char pop()
{
char temp;
temp = arr[top];
top--;
return temp;
}
};
void RPN(string exp)
{
stackOperations st ;
int len = exp.length();
st.allocate(len);
for(int i=0; i <=len; i++){
char tmp ;
tmp = exp[i];
if(tmp=='('){
st.push('(');
}
else if(tmp==')'){
char y = st.pop();
while(y != '('){
cout << y ;
y = st.pop();
}
}
else if(int(tmp) >= 97 && int(tmp) <= 122 ) {
cout << tmp ;
}
else {
st.push(tmp);
}
}
st.deallocate();
}
int main() {
int test ;
string exp ;
cin >> test;
cin.ignore();
while(test!=0){
getline(cin, exp);
RPN(exp);
cout << endl ;
test--;
}
return 0;
}
class stackOperations{
private:
int top = -1 ;
char *arr;
public:
void allocate(int len){
arr = new char[len] ;
}