【数据结构】栈

要求:

熟悉栈的定义,栈的特点以及栈的基本操作。能够根据实际情况选择合适的存储结构,解决实际问题。

对任意给定的一个中缀算术表达式输出等价的后缀形式。

代码实现:

cpp 复制代码
#include<iostream>
#include<string>
#include<stack>

using namespace std;

int prio(char op) {                 //给运算符优先级排序
	int t;
	if (op == '*' || op == '/')
		t = 2;
	if (op == '+' || op == '-')
		t = 1;
	if (op == '(')
		t = 0;
	return t;
}
bool Trans(string &str,string &str1) {  
	stack<char> s;                 
	int i;
	for (i = 0; i<str.size(); i++) {
		if (str[i] >= '0' && str[i] <= '9') {   
			str1+=str[i];
		}
		else {                        
			if (s.empty())           
				s.push(str[i]);
			else if (str[i] == '(')  
				s.push(str[i]);
			else if (str[i] == ')') {  
				while (s.top() != '(') {  
					str1+= s.top();
					s.pop();
				}
				s.pop();                
			}
			else {
				while (prio(str[i]) <= prio(s.top())) { 
					str1+= s.top();
					s.pop();
					if (s.empty())     
						break;
				}
				s.push(str[i]);   
			}
		}
	}
	while (!s.empty()) {     
		str1+= s.top();
		s.pop();
	}
	return true;

}
int main() {                
	string in;
	string post;
	cout << "请输入中缀表达式" << endl;
	cin >> in;
	Trans(in,post);
	cout << "后缀表达式为" << post << endl;
	return 1;
}

执行结果:

相关推荐
BomanLj11 小时前
NSK W1202KA-3P-C3Z5 不锈钢精密滚珠丝杠技术规范
经验分享·规格说明书
金融小师妹14 小时前
人工智能推演框架:非农降温信号如何重构黄金定价模型
数据结构·人工智能·机器学习·transformer
BomanGe414 小时前
NSK百吨级超重载高速静音丝杠技术详解
经验分享·规格说明书
GMICLOUD14 小时前
GMI Cloud 登陆 WAIC 2026 领航舞台,透传全栈全球化 AI 基建,联合媒体及多家企业发布AI出海白皮书
经验分享
Bomangedd14 小时前
NSK滚珠丝杠RNFTL3232A3S技术手册
经验分享·规格说明书
郭泽斌之心14 小时前
给 AI 交易助手做 LLM 网关:多通道负载均衡 + 静默失败自动切换
人工智能·经验分享·ea·mt5·fay数字人·easydeal
中云DDoS CC防护蔡蔡14 小时前
短信验证码被攻击怎么办
运维·经验分享·http·网络安全·微信
BomanGe416 小时前
【无标题】
经验分享·规格说明书
ysa05103016 小时前
【并查集】判环,深搜
数据结构·c++·算法·深度优先
BomanGe117 小时前
NSK HTF5010-7.5 重载滚珠丝杠技术解析
经验分享·规格说明书