⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 infixtopostfix.h

📁 上传几个数据结构源代码
💻 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 + -