至於中綴表示式和逆波蘭式是什麼就不多闡述了。中綴表示式和波蘭式的相互轉換思想是一樣的
int judge(char data)
return res;
}string getnibolan(string str)else
if(cur ==')')else
}}else
}else
if ( ('a'
<=cur&&cur<='z')||('a'
<=cur && cur<='z')||('0'
<=cur && cur<='9') )elseelse
}else
}}else}}
//問題1 忘記了 列印出棧中的所有元素
while (!isempty(stack))
return newstr;
}
string getzhongzhui(string str)else
if(cur == '+' || cur == '-')else
}else
}else
if(cur == '*' || cur =='/')else
}else}}
//如果字串的首位有括號,直接去掉
if (newstr[0]=='(' && newstr[newstr.length()-1] ==')' )
return newstr;
}
//鏈式棧的定義(不帶頭結點,頭插法)
//n->h->d->b->c->r
typedef
struct lsnodelsnode ,*linkstack;
//初始化乙個棧
void initstack(linkstack &top)
//清空乙個棧
void clearstack(linkstack &top)
}//進棧
void push(linkstack &top,char data);
top = p;
}//出棧
char pop(linkstack &top)
int res = 0;
lsnode* p = top;
top = top->next;
res = p->data;
return res;
}//檢視棧頂元素
char gettop(linkstack top)
return top->data;
}//求棧的長度
int length(linkstack top)
return count;
}//棧是否為空
bool isempty(linkstack top)
return
false;
}//棧是否為滿
bool isfull(linkstack top)
int main()
中綴表示式和逆波蘭式的相互轉換
例子 in 8 3 2 6 5 4 out 8 3 2 6 5 4 中綴表示式轉換為逆波蘭式 將乙個普通的中序表示式轉換為逆波蘭表示式的一般演算法是 其中stack op 用來存放運算子棧。陣列ans用來存放字尾表示式。演算法思想 從左到右掃瞄中綴表示式,是運算元就放進陣列ans的末尾。1 如果是 ...
中綴式轉換為逆波蘭表示式
搗騰了一天,總算有個雛形了,先發上來吧,已知的bug 1.直接輸入回車會溢位,2.表示式不完整會溢位,3.多餘的 會造成未知的結果,但是如果是在式子的最後是沒有問題的,4.中文的字元會報錯。目前已知的就這麼多了吧 下面上 include include include struct stack ty...
字首 波蘭式 中綴 字尾表示式 逆波蘭式
中綴表示式 中綴表示式就是常見的運算表示式,如 3 4 5 6 字尾表示式 字尾表示式又稱逆波蘭表示式,與字首表示式相似,只是運算子位於運算元之後 比如 3 4 5 6 與字首表示式類似,只是順序是從左至右 從左至右掃瞄表示式,遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧頂的兩個數,用運算子對它...