?? expreforc.cpp
字號:
//#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <iostream.h>
#include "LinStack.h"
template<class T>
void PostExp(LinStack<T> &s, char *Expression);
void main(void)
{
char Expression[80] = {"1342/-5*+#"};
LinStack<int> s;
PostExp(s, Expression);
}
template <class T>
void PostExp(LinStack<T> &s, char *Expression)
//借助堆棧s的中綴表達式Expression到后綴表達式的轉換和輸出
{
char ch;
int x, x1, x2, j = 0;
ch = Expression[j]; //取第一個單詞給x2
while(ch != '#') //循環直到轉換完畢
{
if(isdigit(ch))//ch為操作數
{
x = (int)(ch) - 48;
s.Push(x); //輸出操作數ch
}
else
{
x2 = s.Pop(); //把x2入棧
x1 = s.Pop(); //取新的棧頂元素給x1
switch(ch)
{
case '+': {x1 += x2; break;}
case '-': {x1 -= x2; break;}
case '*': {x1 *= x2; break;}
case '/': {x1 /= x2; break;}
}
s.Push(x1);
}
ch = Expression[++j]; //繼續取下一個單詞給x2
}
cout << "后綴表達式計算結果為: " << s.Pop() << endl;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -