中缀表达式转后缀表达式
来源:互联网 发布:unctad统计数据库 编辑:程序博客网 时间:2024/05/16 02:02
template <class T>
class stack
{
public:
stack(int len = 50)
{
elem = new T[len];
m_top = -1;
}
void Push(const T &val)
{
elem[++m_top] = val;
}
bool isEmpty()
{
return m_top == -1;
}
T& Pop()
{
return elem[m_top--];
}
T& getTop()
{
return elem[m_top];
}
private:
T *elem;
int m_top;
};
int getPriority(char ch)
{
if(ch == '+' || ch == '-')
return 1;
if(ch == '*' || ch == '/')
return 2;
return 0;
}
char* InfixtoSuffixS(char* exp,int len) //中缀转后缀
{int x = 0;
char *tmpExp = new char[len];
memset(tmpExp,'\0',len);
stack<char> opStack(len);
for(int i = 0;i<len;i++)
{
switch(exp[i])
{
case'(':
opStack.Push(exp[i]);
break;
case ')':
while(opStack.getTop() != '(')
tmpExp[x++] = opStack.Pop();
opStack.Pop();
break;
case '+':case '-': case '*':case '/':
while(!opStack.isEmpty() && opStack.getTop() !='(' &&
getPriority(opStack.getTop()) <= getPriority(exp[i]))
tmpExp[x++] = opStack.Pop();
opStack.Push(exp[i]);
break;
default:
tmpExp[x++] = exp[i];
break;
}
}
while(!opStack.isEmpty())
{
char tmp = opStack.Pop();
if(tmp != '(')
tmpExp[x++] = tmp;
}
return tmpExp;
}
0 0
- 中缀转后缀表达式
- 表达式中缀转后缀
- 中缀转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 后缀表达式转中缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 正则表达式 Pattern和Matcher(续)
- error RC2108: expected numerical dialog constant
- 文件上传到服务器并获取文件中的数据
- 项目管理
- STL学习小结
- 中缀表达式转后缀表达式
- 退出所有或部分Activity
- DFS深度搜索-走迷宫,取数字问题
- __declspec (naked)
- Vijos P1941 猜谜游戏(AHOI2015)题解
- 出现u8和uint8之间不匹配的解决办法
- Reaver 基本用法示例
- Linked List Cycle II
- 安卓第二十天:ImageView与嵌套LinearLayout