【数据结构】栈

要求:

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

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

代码实现:

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;
}

执行结果:

相关推荐
数智启示录2 小时前
PostgreSQL 内存调优实战(第 12 篇):work_mem 只调大 64 倍,峰值为什么远不止 64 倍
运维·数据库·经验分享·postgresql·面试
数字生命卡兹克3 小时前
GPT-6 Astra全面解析 - “欢迎来到AGI时代。”
经验分享
富唯智能机器人5 小时前
复合机器人售后质保机制|故障响应速度与零部件备货保障|富唯智能
经验分享
wuyk5555 小时前
107.FreeRTOS 链表深度解析:从原理到面试满分答案
c语言·开发语言·数据结构·stm32·单片机·链表·面试
-dzk-5 小时前
【链表】LC 138.随机链表的复制
数据结构·链表
Persistent的粽子!5 小时前
C++:类与对象(一)
开发语言·c++·经验分享·笔记
恒锐丰科技林技术员5 小时前
EG11722:高耐压 150V 降压 DC‑DC 电源芯片,工业宽压电源优选方案
经验分享·嵌入式硬件
上海广测检测科技有限公司6 小时前
平板电脑CRA合规解读:欧盟《网络弹性法案》对通用计算终端的网络安全要求
经验分享
cszn20266 小时前
AI如何自动识别文件上传废标风险?智能评审项目实践
经验分享
洋不写bug6 小时前
链表补充练习,双链表的模拟实现
java·数据结构·链表·双链表·底层实现