关于中缀表达转后缀表达一题我的做法及思想
在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享关于中缀表达转后缀表达一题我的做法及思想,希望可以对大家能有小小的帮助。
下面是我做这题的思想以及具体程序,不知道大家觉得这样做好不好,我是用递归做的./*思想:
1.第一个字符肯定先放到新数组.
2.假如碰到'*',或者'/'的话就先把这个符号后面的那个字符放入新数组,然后再将符号压进去.
3.假如碰到'+','-'的话,假如下一个符号的优先级和它们一样就用同上的方法,假如后面符号的优先级比它们
高的话就用for循环来查找下一个与它们优先级一样的符号.假如查到的话在完成后面的符号全都放入新数组后就把这个符号放入新数组,然后再执行后面的递归.假如前面没查到相同优先级符号的话就把后面的符号都放入新数组后再把这个符号放进去.做这一步中因为牵涉到后面'*','/'符号都放入后要回到原来的位置,所以就用了个yes变量来判定是否碰到这种要返回的情况,假如yes=1,就表示有这种情况,有些地方需要非凡判定.
4.假如要再加入括号的话我觉得可以再用一个类似yes类型的变量就可以完成.
*/
#define N 80
int i=0,yes=0;/*i是新数组的下标指示,yes变量用来判定'+','-'后面假如有'*','/'的情况*/
void Input(char *x);/*输入表达式*/
void Output(char *x);/*输出逆波兰*/
int Fun(char *x,char *y,int n);/*递归函数*/
void main(void)
{
char x[N],y[N];
Input(x);
Fun(x,y,1);
Output(y);
}
int Fun(char *x,char *y,int n)/*递归函数*/
{int j;
if(x[n]=='