怎么更改计算机侧IF,switch语句怎么改成if else 语句?

中缀表达式——〉后缀表达式

void infixtosuffix(char *infix,char *suffix)

{

int state=0;//if 进入的为数字,iorc=1;为字符,iorc=0

int i=0,j=0;//i记录infix,j记录suffix

PSeqStack pastack;//,pistack;

pastack=createEmptyStack_seq(20);

//pistack=createEmptyStack_seq(20);

char c,c1;

for(i=0;infix[i]!='\0';++i)

{

c=infix[i];

switch(c)

{

case'0':case'1':case'2':case'3':case'4':

case'5':case'6':case'7':case'8':case'9':

state=1;

suffix[j++]=c;//遇到数字就输出

break;

case'(':

if(state)suffix[j++]=' ';//遇到数字在数字后输出一个空格

state=0;

push_seq(pastack,c);//遇到左括号入栈

break;

case')':

if(state)suffix[j++]=' ';//遇到数字在数字后输出一个空格

state=0;

while(!isEmptyStack_seq(pastack))

{

c1=top_seq(pastack);

pop_seq(pastack);

if(c1=='(')

{

break;

}

suffix[j++]=c1;

}

break;//每读到右括号,将栈类元素弹出,直至遇到左括号,但不弹出左括号

case'+':case'-':

if(state)suffix[j++]=' ';//遇到数字在数字后输出一个空格

state=0;

if(!isEmptyStack_seq(pastack))//栈不空时作比较

{

c1=top_seq(pastack);

if(c1=='+'||c1=='-'||c1=='*'||c1=='/')

{

suffix[j++]=c1;

pop_seq(pastack);

}//运算符为+-*/时取栈顶,表明所遇操作符比前一操作符运算级低

}

push_seq(pastack,c);//运算符入栈

break;

case'*':case'/':

if(state)suffix[j++]=' ';//遇到数字在数字后输出一个空格

state=0;

if(!isEmptyStack_seq(pastack))//栈不空时作比较

{

c1=top_seq(pastack);

if(c1=='*'||c1=='/')

{

suffix[j++]=c1;

pop_seq(pastack);

}//运算符为*/时取栈顶,表明所遇操作符比前一操作符运算级低

}

push_seq(pastack,c);//运算符入栈

break;

}

}

if(state) suffix[j++]=' ';//前一个是数字的话在后面加一个空格

while(!isEmptyStack_seq(pastack))//把剩余的运算符补上

{

c1=top_seq(pastack);

pop_seq(pastack);

suffix[j++]=c1;

}

free(pastack);

suffix[j++]='\0';

}

这个函数用switch是能做成的,但是怎么改if else啊,我不太会,改过去就不对了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值