char op c语言,c语言求助

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include //含有int isdigit(int c)函数原形

#include

#include

#include"stack.h"

typedef char ElemType;

int Precedence(char op)//优先级判断

{

switch(op)

{

case'+':

case'-':

return 1;

case'*':

case'/':

return 2;

case'(':

case'@':

default:

return 0;

}

}

void Change(char *s1,char *s2)//将S1中缀表达式转换为s2后缀表达式

{

Stack r;

InitStack(r);

Push(r,'@');//给栈底放入@字符,它具有最低优先级

int i,j;

i=0;

j=0;

char ch=s1[i];

while(ch!='@')

{

if(ch==' ') ch=s1[++i];

else if(ch=='(')//对于左括号,直接进栈

{

//填空

}

else if(ch==')')//对于右括号,使括号内的仍停留在栈中的运算符依次出栈并写入s2

{

}

else if(ch=='+'||ch=='-'||ch=='*'||ch=='/')

//对于运算符,则判断优先级,优先级大于栈顶元素入栈,否则栈顶元素出栈并输出直至当前运算符入栈

{

//填空

}

else//对于其他情况,即数字

{

//填空

}

}

//栈不为空,则栈中符号全部出栈并输出

if(!StackEmpty(r))

{

ch=Pop(r);

while(ch!='@')

{

//填空

}

}

s2[j++]='@';

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

}

float Compute(char *str)//计算后缀表达式的结果

{

Stack S;

InitStack(S);

istrstream ins(str);

char ch;

float x;

ins>>ch;

while(ch!='@')

{//atof(Pop(S))

switch(ch)

{

case'+'://填空

break;

case'-'://填空

break;

case'*'://填空

break;

case'/':x=Pop(S);

if(x!=0)

x=Pop(S)/x;

else{

cerr<

exit(1);

}break;

default:

ins.putback(ch);

ins>>x;

}

Push(S,x);

ins>>ch;

}

if(!StackEmpty(S))

{

x=Pop(S);

if(StackEmpty(S))return x;

else

{

cerr<

exit(1);

}

}

else

{

cerr<

exit(1);

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值