早教吧 育儿知识 作业答案 考试题库 百科 知识分享

表达式的求值这个程序在tc里有很多错误,在VC里有一个错误,不知道怎么改,就是关于#include"stack.h"/一直错误.#include#include"stack.h"/*包含一个堆栈数据结构*/#defineExpSize30intisp(charc){/*计算运

题目详情
表达式的求值
这个程序在tc里有很多错误,在VC里有一个错误,不知道怎么改,就是关于# include"stack.h"/一直错误.
# include
# include"stack.h"/*包含一个堆栈数据结构*/
#define ExpSize 30
int isp(char c)
{/*计算运算符c的栈内优先级*/
int priority;
switch (c)
{
case '(':priority=0;break;
case '+':
case '-':priority=5;break;
case '*':
case '/':priority=6;break;
case '#':priority=0;break;
}
return priority;
}
int icp(char c)
{/*计算运算符c的栈外优先级*/
int priority
switch(c)
{
case'(':priority=8;break;
case'+':
case'-':priority=5;break;
case'*':
case'/':priority=6;break;
case'#':priority=0;break;
}
return priority;
}
void InfixToPostfix(char exp[])
{
Stack s; int i; char ch,y;
CreateStack(&s,Stacksize);/*构造一个空栈*/
Push(&s,'#');/*栈底插入'#'*/
printf("\n The Postfix expression is :");
for(i=0, ch=exp[i];ch!='#';i++,ch=exp[i])
{
if(isdigit(ch)//isalpha(ch)printf("%c",ch);/*输出操作数ch*/
else if (ch==')')
for(StackTop(s,&y), Pop(&s);y!='(';StackTop(s,&y),Pop(&s))
printf("%c",y);/*输出栈中属于括号内的运算符*/
else
{
for(StackTop(s,&y);icp(ch)isp(y)*/
push(&s,ch);/*当前运算符ch进栈*/
}
}
while(!IsEmpty(S))
{/*输出栈中剩余运算符*/
StackTop(s,&y);Pop(&s);
if(y!='#')printf("%c",y);
}
}
void main()
{
char exp[ExpSize]={'6','/','(','4','-','2',')','+','3','*','2','#'};
InfixToPostfix(exp);
}
▼优质解答
答案和解析
源代码不全,要编译这个程序当前文件夹下首先得有stack.h这个头文件以及相应的代码