0
#include <stdio.h>
#include <ctype.h>
char stack[50];
int top=-1;
void push(char x)
{
stack[++top]=x;
}
char pop()
{
if(top==-1)
return -1;
else
return stack[top--];
}
此功能用於優先運營商:這個程序將中綴轉換爲c中的後綴給出了運行時錯誤。爲什麼?
int priority(char x)
{
if(x=='+'|| x=='-') {
return 1;
} else if(x=='(') {
return 0;
} else if(x=='*'||x=='/') {
return 2;
} else {
return 3;
}
}
int main()
{
char exp[50], *e, x;
scanf("%s", exp);
e = exp;
while(*e != '\0') {
if(isalnum(*e)) {
printf("%c",*e);
} else {
while(priority(stack[top]) >= priority(*e)) {
printf("%c",pop());
}
push(*e);
}
e++;
}
while(top!=-1) {
printf("%c",pop());
}
return 0;
}
我在這個節目得到一個運行時錯誤。我不知道爲什麼。你能告訴我任何可以實施的改變嗎?在一些編譯器中,我將輸出看作一些無限循環。
你會得到哪個錯誤? – Gianluca
嘗試使用調試器查看出錯的位置。 –