中缀表达式转化为后缀表达式(栈思想)
发布日期:2021-11-15 21:44:13
浏览次数:2
分类:技术文章
本文共 1888 字,大约阅读时间需要 6 分钟。
例题:
数据结构实验之栈与队列二:一般算术表达式转换成后缀式Problem Description
对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。
Input
输入一个算术表达式,以‘#’字符作为结束标志。
Output
输出该表达式转换所得到的后缀式。
Sample Input
ab+(c-d/e)f#
Sample Output
abcde/-f+
代码展示:
#includeusing namespace std;int judge(char a,char b){ if(b=='(') { return 1; } else if((a=='%'||a=='*'||a=='/')&&(b=='+'||b=='-')) { return 1; } else return 0;}int main(){ char a[10000]; scanf("%s",a); int n=strlen(a); stack q; int i; for(i=0;i ='a'&&a[i]<='z') { printf("%c",a[i]); } else if(a[i]=='#') { while(!q.empty()) { printf("%c",q.top()); q.pop(); } } else { if(q.empty()) { q.push(a[i]); } else { if(a[i]=='(') q.push(a[i]); else if(a[i]==')') { while(q.top()!='(') { printf("%c",q.top()); q.pop(); } q.pop(); } else if(judge(a[i],q.top())>0) { q.push(a[i]); } else { printf("%c",q.top()); q.pop(); q.push(a[i]); } } } } return 0;}
步骤说明:
举例说明a*(b+c)/d 转化为后缀表达式为:abc+*d/
变化过程为:
1、碰到运算数a就输出;
2、碰到 * 号放入栈 3、碰到左括号,左括号的优先级比*号的优先级高,so把左括号放进栈中; 4、碰到运算数b,直接输出; 5、当左括号放进栈中的时候,优先级降到最低,so+号的优先级比左括号高,放进栈中,并把c输出; 6、当碰到右括号的时候,把栈顶的元素以此依次输出知直到碰到左括号结束,把左括号从栈中删除; 7、碰到 / 号,除法的优先级和乘法相同,但是要按照从左到右的原则,so输出 * ,把 / 号放进栈中;然后输出运算数d; 8、运算截止,把栈中的所有元素全部输出; 时间复杂度: O(n)转载地址:https://blog.csdn.net/qq_43419016/article/details/97813669 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月21日 16时13分06秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
FTP文件管理项目(本地云)项目日报(二)
2021-06-30
FTP文件管理项目(本地云)项目日报(三)
2021-06-30
FTP文件管理项目(本地云)项目日报(四)
2021-06-30
【C++】勉强能看的线程池详解
2021-06-30
FTP文件管理项目(本地云)项目日报(五)
2021-06-30
FTP文件管理项目(本地云)项目日报(关于不定长包的测试)
2021-06-30
FTP文件管理项目(本地云)项目日报(六)
2021-06-30
FTP文件管理项目(本地云)项目日报(七)
2021-06-30
FTP文件管理项目(本地云)项目日报(八)
2021-06-30
【Linux】血泪教训 -- 动态链接库配置方法
2021-06-30
FTP文件管理项目(本地云)项目日报(九)
2021-06-30
以练代学设计模式 -- FTP文件管理项目
2021-06-30
FTP文件管理项目(本地云)项目日报(十)
2021-06-30
学以致用设计模式 之 “组合模式”
2021-06-30
我用过的设计模式(7)--享元模式
2021-06-30
MySQL数据库从入门到实战应用(学习笔记一)
2021-06-30
MySQL数据库从入门到实战应用(学习笔记二)
2021-06-30
种树:二叉树、二叉搜索树、AVL树、红黑树、哈夫曼树、B树、树与森林
2021-06-30
【C++】攻克哈希表(unordered_map)
2021-06-30
转:【答学员问】- 该如何根据岗位学习相关技能
2021-06-30