📄 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 + -