面试题77:前缀、中缀、后缀表达式的相互转换

2024-04-06 17:38

本文主要是介绍面试题77:前缀、中缀、后缀表达式的相互转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目:写个函数,一个根据中缀表达式写出后缀缀表达式

#include<iostream>  
#include <vector>
#include <stack>
using namespace std;bool IsOperator(char c)
{const char ops[] = "+-*/";for (int i = 0; i < sizeof(ops); i++){if (c == ops[i]) return true;}return false;
}/*
判断优先级:
如果a比b高,返回1,;如果相等,返回0;如果a比b低,返回-1.
*/
int Firster(char a, char b)
{if (a == '(') return -1;   //优先级最低if (a == '+' || a=='-'){if (b == '*' || b == '/') return -1;else return 0;}if (a == '*' || a == '/'){if (b == '+' || b == '-') return 1;else return 0;}return 0;  //这句只是为了消除警告
}/*
将前缀转为后缀
*/
void InfixToSuffix(const vector<char> infix, vector<char> &suffix)
{stack<char> oChar;int size = infix.size();char temp;//int index = 0;for (int i = 0; i < size; i++){temp = infix[i];if (temp == '(') oChar.push(temp);else if (temp == ')'){while (oChar.top() != '('){suffix.push_back(oChar.top());oChar.pop();}oChar.pop();}else{if (!IsOperator(temp)) oChar.push(temp);else{while (!oChar.empty() && Firster(oChar.top(), temp) >= 0) //理解这部分{suffix.push_back(oChar.top());oChar.pop();}oChar.push(temp);}}}while (!oChar.empty()){suffix.push_back(oChar.top());oChar.pop();}suffix.push_back('\0');
}int main(){char arr[] = "9+(3-1)*3+9/2";vector<char> infix(arr, arr + strlen(arr));vector<char> re;InfixToSuffix(infix, re);for (unsigned int i = 0; i < re.size(); i++)cout << re[i];cout << endl;return 0;
}



这篇关于面试题77:前缀、中缀、后缀表达式的相互转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/880439

相关文章

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

Kotlin Map映射转换问题小结

《KotlinMap映射转换问题小结》文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/map... 目录Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、map

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c