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;
    }
  • 相关阅读:
    Markdown 列表、区块、代码(三)
    Markdown 标题、段落、文本(二)
    Markdown 简介(一)
    禅道学习笔记
    地图源改变之后mxd文件打开很慢的问题
    关于iReport报表的分页
    在VC项目中附加包含目录
    类静态成员变量的使用
    UI基础--UISlider&UIProgress
    UI基础--UISwitch
  • 原文地址:https://www.cnblogs.com/oneDongHua/p/14264031.html
Copyright © 2011-2022 走看看