📄 infixtopostfix.h
字号:
#include"SeqStack.h"
#include"Queue.h"
#include"string"
#include"iostream.h"
int isp(const char ch)
{
int priority;
switch(ch)
{
case'#':priority=0;break;
case'(':priority=0;break;
case'+':
case'-':priority=5;break;
case'*':
case'/':priority=6;break;
}
return priority;
}
int icp(const char ch)
{
int priority;
switch(ch)
{
case'(':priority=8;break;
case'+':
case'-':priority=5;break;
case'*':
case'/':priority=6;break;
}
return priority;
};
int InfixToPostfix(string& p,string* result)
{
int i=0;
int j=0;
int strlen=p.length();
//获取操作数和操作副个数
for(;i<strlen;i++)
{ if(p[i]<='9'&&p[i]>='0')
{ for(;p[i]<='9'&&p[i]>='0';i++);
j++;
}
else j++;
}
string* result=new string[j];
SeqStack<string> mStack;
string tmp="#";
char ch;
mStack.Push(tmp);
for(i=0,j=0;i<strlen;i++)
{
if(p[i]<='9'&&p[i]>='0')
{
tmp="";
for(;p[i]<='9'&&p[i]>='0';i++)
tmp+=p[i];
result[j++]=tmp;
}
else if(p[i]==')')
{
tmp=mStack.Top();ch=tmp[0];
while(ch!='(')
{
result[j++]=tmp;mStack.Pop();tmp=mStack.Top();ch=tmp[0];
}
mStack.Pop();
}
else
{
tmp=mStack.Top();
ch=tmp[0];
if(icp(p[i])>=isp(ch))
{
tmp="";tmp+=p[i];mStack.Push(tmp);
}
else
{
while(icp(p[i])<isp(ch))
{
result[j++]=tmp;
mStack.Pop();tmp=mStack.Top();ch=tmp[0];
}
tmp="";tmp+=p[i];mStack.Push(tmp);
}
}
tmp=mStack.Top();
while(tmp!="#")
{
result[j++]=tmp;
mStack.Pop();
tmp=mStack.Top();
}
}
return j-1;
}
int DoOperate(char a,char b,char op)
{
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -