数据结构的后缀表达式计算,用栈实现,为什么运行部出结果
#include<stdio.h>#include<stdlib.h>
#include <ctype.h>
#define maxsize 50 //define 后面没有;
typedef double elemtype;
typedef struct
{
int top;
elemtype data;
}stacklist;
initlist(stacklist *s)
{
s->top=-1;
return 0;
}
push(stacklist *s,elemtype e)
{
s->top++;
s->data=e;
return true;
}
pop(stacklist *s,elemtype *e)
{
*e=s->data; //忘记了*
s->top--;
return true;
}
main()
{
stacklist s;
initlist(&s);
char c;
char str;
int i=0;
double d,e;
printf("input:\n");
scanf("%c",&c);
while(c!='#')
{
while(isdigit(c)|| c=='.')
{
str=c;
str='\0';
scanf("%c",&c);
if(c==' ') //少了一个=
{
i=0;
e=atof(str);
push(&s,e); //这里debug时无法下一步,直接卡住
break;
}
}
switch(c)
{
case '+':
pop(&s,&d);
pop(&s,&e);
push(&s,d+e);
break;
case '-':
pop(&s,&d);
pop(&s,&e);
push(&s,e-d);
break;
case '*':
pop(&s,&d);
pop(&s,&e);
push(&s,e*d);
break;
case '/':
pop(&s,&d);
pop(&s,&e);
if(d!=0)
{
push(&s,e/d);
break;
}
else
{
printf("除数不能为0");
return -1;
break;
}
default:
break;
}
}
pop(&s,&e);
printf("%f\n",e);
}
我一看到数据结构就{:10_266:},上学期给我整无语了
页:
[1]