PTA数据结构与算法题目集(中文) 7-20
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PTA数据结构与算法题目集(中文) 7-20,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2901字,纯文字阅读大概需要5分钟。
内容图文
![PTA数据结构与算法题目集(中文) 7-20](/upload/InfoBanner/zyjiaocheng/699/a89668b3307949cf8646d46417753d29.jpg)
PTA数据结构与算法题目集(中文) 7-20
7-20?表达式转换?(25?分) ?算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。
输入格式:
输入在一行中给出不含空格的中缀表达式,可包含+
、-
、*
、\
以及左右括号()
,表达式不超过20个字符。
输出格式:
在一行中输出转换后的后缀表达式,要求不同对象(运算数、运算符号)之间以空格分隔,但结尾不得有多余空格。
输入样例:
2+3*(7-4)+8/4
输出样例:
2 3 7 4 - * + 8 4 / +
题目分析:一开始没思路 百度一下就有了。。看了大佬的思路
一种方法是利用树的想法 将中缀表达式写成树的形式 利用先序遍历可以输出前缀表达式 利用后续遍历可以输出后缀表达式
另一种方法是利用栈的想法 可以利用栈将中缀表达式转换为前缀 后缀表达式
https://www.cnblogs.com/zxcjj/p/7793329.html 先把我写的这个放在这 这个一个测试点都没过 。。
![PTA数据结构与算法题目集(中文) 7-20 - 文章图片](/upload/getfiles/0001/2021/5/3/20210503073729478.jpg)
![PTA数据结构与算法题目集(中文) 7-20 - 文章图片](/upload/getfiles/0001/2021/5/3/20210503073729585.jpg)
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<string.h> 4 #include<ctype.h> 5 #define INIFITY -65535 6 char Stack[100]; 7 int topOfStack = 0; 8 9 void Push(char op) 10 { 11 Stack[topOfStack++] = op; 12 } 13 14 char Pop() 15 { 16 char op = Stack[--topOfStack]; 17 return op; 18 } 19 20 char Top() 21 { 22 if (!topOfStack) 23 return 'I'; //当栈顶无元素时候返回I元素 24 else 25 return Stack[topOfStack - 1]; 26 } 27 28 int IsEmpty() 29 { 30 return topOfStack == 0; 31 } 32 33 int Priority(char op) 34 { 35 switch (op) 36 { 37 case '(':return -1; break; 38 case')':return 0; break; 39 case'+': 40 case'-':return 1; break; 41 case'*': 42 case'/':return 2; break; 43 case'I':return INIFITY; break; //处理栈顶无元素的情况 44 } 45 } 46 47 int postFix(char Begin[],char End[],int Length) 48 { 49 int i = 0; 50 int TrueLength = Length; 51 for (int j = 0; j < Length; j++) 52 { 53 if (isdigit(Begin[j])||Begin[j]=='.') 54 End[i++] = Begin[j]; 55 else if (Begin[j] == '(') 56 Push(Begin[j]); 57 else if (Begin[j] == ')') 58 { 59 while (Top() != '(') 60 End[i++] = Pop(); 61 Pop(); 62 TrueLength = TrueLength - 2; 63 } 64 else 65 { 66 while (1) 67 { 68 if (Priority(Begin[j]) > Priority(Top())) 69 { 70 Push(Begin[j]); 71 break; 72 } 73 else 74 End[i++] = Pop(); 75 } 76 } 77 } 78 while (!IsEmpty()) 79 { 80 End[i++] = Pop(); 81 } 82 return TrueLength; 83 } 84 85 int main() 86 { 87 char Begin[21] = { 0 }, End[21] = { 0 }; 88 scanf("%s", Begin); 89 int Length=strlen(Begin); 90 int TrueLength=postFix(Begin, End, Length); 91 for (int i = 0; i < TrueLength - 1; i++) 92 printf("%c ", End[i]); 93 printf("%c", End[TrueLength - 1]); 94 return 0; 95 }View Code
接下来是别人的写法
https://www.cnblogs.com/yuxiaoba/p/8399934.html
内容总结
以上是互联网集市为您收集整理的PTA数据结构与算法题目集(中文) 7-20全部内容,希望文章能够帮你解决PTA数据结构与算法题目集(中文) 7-20所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。