zoukankan      html  css  js  c++  java
  • 中缀表达式到后缀表达式的转换

    # include <iostream>
    #define MAXsize 30
    #define Stksize 20
    
    int icp(char op)
    {
    	switch (op)
    	{
    	case '#': return 0; break;
    	case '(': return 6; break;
    	case '*': return 4; break;
    	case '/': return 4; break;
    	case '+': return 2; break;
    	case '-': return 2; break;
    	case ')': return 1; break;
    	}
    }
    
    int isp(char op)
    {
    	switch (op)
    	{
    	case '#': return 0; break;
    	case '(': return 1; break;
    	case '*': return 5; break;
    	case '/': return 5; break;
    	case '+': return 3; break;
    	case '-': return 3; break;
    	case ')': return 6; break;
    	}
    }
    
    void infix_to_Postfix(char INfix[], char Postfix[])
    {
    	char OPSK[Stksize]; int top = -1;
    	OPSK[++top] = '#';
    	int i = 0, j = 0;
    	char ch = INfix[i++];
    	while (ch != '#'||top != -1)
    	{
    		if (ch >= '0'&&ch <= '9')
    		{
    			Postfix[j++] = ch;
    			ch = INfix[i++];
    		}
    		else
    		{
    			char op = OPSK[top];
    			if (isp(op) < icp(ch)) { 
    				OPSK[++top] = ch; 
    				ch = INfix[i++]; 
    			}
    			else if (isp(op) > icp(ch)) {
    				Postfix[j++] = OPSK[top--];
    			}
    			else
    			{
    				char temp= OPSK[top--];
    				if(temp=='(') ch = INfix[i++];
    			}
    		}
    	}
    	Postfix[j] = '#';
    }
    
    int main(int argc, char * argv[])
    {
    	char INfix[MAXsize] = "5+9*(6-4)-9/3#", Postfix[MAXsize];
    	for (int i = 0; INfix[i] != '#'; i++) std::cout << INfix[i];
    	std::cout<<std::endl;
    	infix_to_Postfix(INfix, Postfix);
    	for (int i = 0; Postfix[i] != '#'; i++) std::cout << Postfix[i];
    	std::cout << std::endl;
    	return 0;
    }
  • 相关阅读:
    Python的可变和不可变类型
    Pycharm设置语法规范快捷键方式
    python学习0305作业
    关于jQuery对象与DOM对象
    ie6下子元素撑大父元素
    Hibernate持久层ORM框架
    基于注解的事务管理
    掌握基于AOP事务管理
    Spring事务管理
    事务保存点savepoint
  • 原文地址:https://www.cnblogs.com/oneDongHua/p/14264031.html
Copyright © 2011-2022 走看看