鱼C论坛

 找回密码
 立即注册
查看: 1633|回复: 1

数据结构的后缀表达式计算,用栈实现,为什么运行部出结果

[复制链接]
发表于 2021-8-5 16:22:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#include<stdlib.h>
#include <ctype.h>
#define maxsize 50   //define 后面没有;
typedef double elemtype;
typedef struct
{
        int top;
        elemtype data[maxsize];
}stacklist;
initlist(stacklist *s)
{
        s->top=-1;       
        return 0;
}
push(stacklist *s,elemtype e)
{
        s->top++;
        s->data[s->top]=e;
        return true;
}
pop(stacklist *s,elemtype *e)
{
        *e=s->data[s->top];   //忘记了*
        s->top--;
        return true;
}
main()
{
        stacklist s;
        initlist(&s);
        char c;
        char str[10];
        int i=0;
        double d,e;
        printf("input:\n");
        scanf("%c",&c);
        while(c!='#')
        {
                while(isdigit(c)|| c=='.')
                {
                        str[i++]=c;
                        str[i]='\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);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-5 16:46:10 | 显示全部楼层
我一看到数据结构就,上学期给我整无语了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 22:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表