中缀转后缀 c++实现(数据结构)

一、功能实现:

输入正常的中缀表达式,通过程序实现转化成后缀表达式,并且输出结果。

二、思路分析:
1. 输入:三个示例

2+4x6-8/2+5
2+(3x4)-5+1
3+(11)*2-6

2. 分析:

2.1 从左边开始读取,读到数字直接输出不入栈,读到运算符入栈,入栈之前判断前面的运算符是否比它的优先级高,如果比它高就入栈,如果比它低或者相等的优先级,就先让栈顶的运算符出栈,然后再入栈。
2.2 带括号的情况:当读取到 ( 符时,不管前面是什么运算符,直接入栈,然后没遇到 ) 符之前都是按上面正常运算,直到 ) 符时,)不用入栈然后直接出栈两个,第一个是运算符,第二个是 ( 符,然后直到栈为空。
2.3 整数10以上:定义一个LEN记录int OPER= 0;标识, 读取到 ( 符号时打开标识OPER =1 ,LEN开始记录len++;,读到 ) 符号时,OPER关闭OPER =0;之后得到LEN长度,比如:(11) -> 2,就是前面2个是一坨数据,然后就很长的一段计算,代码中有这里就不扯。

三、思路图:

在这里插入图片描述
在这里插入图片描述

四、代码实现:
#include <iostream>
#include <sstream>
using namespace std;

static int IDX = 0;			//压栈用 
static int NUM_LEN = 0;		//查括号中的数字大小 
static stringstream ss; 

static string RESULT
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值