栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言利用后缀表达式和栈结构完成简单的个位数四则运算

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言利用后缀表达式和栈结构完成简单的个位数四则运算

#include
#include
struct stack
{
    int *data;
    int top;
    int maxsize;
};
struct stack *create(int maxSize)
{
    struct stack *s;
    s=malloc(sizeof(struct stack));
    s->data=malloc(sizeof(int)*maxSize);
    s->top=-1;
    s->maxsize=maxSize;
    return s;
}
int isFull(struct stack *s)
{
    return s->top==s->maxsize-1;
}
int isEmpty(struct stack *s)
{
    return s->top==-1;
}
void push(struct stack *s,int num)
{
    if(isFull(s))
    {
        printf("stack is fulln");
        return;
    }
    s->data[++s->top]=num;
}
int pop(struct stack *s)
{
    if(isEmpty(s))
    {
        printf("stack is emptyn");
        exit(-1);
    }
    int temp=s->data[s->top--];
    return temp;
}
int count(char *expert)
{
    struct stack *s;
    int n1,n2;
    s=create(20);
    for(int i=0; expert[i]!=''; i++)
    {
        switch(expert[i])
        {
        case '0':
        case '1':
        case '2':
        case '3':
        case '4':
        case '5':
        case '6':
        case '7':
        case '8':
        case '9':
            push(s,expert[i]-48);
            break;
        case '+':
        case '-':
        case '*':
        case '/':
            if(!isEmpty(s))
            {
                n2=pop(s);
            }
            else
            {
                printf("error1n");
                exit(-1);
            }
            if(!isEmpty(s))
            {
                n1=pop(s);
            }
            else
            {
                printf("error1n");
                exit(-1);
            }
            switch(expert[i])
            {
            case '+':
                push(s,n1+n2);
                break;
            case '-':
                push(s,n1-n2);
                break;
            case '*':
                push(s,n1*n2);
                break;
            case '/':
                push(s,n1/n2);
                break;
            }
            break;
        default:
            printf("error2n");
            exit(-1);
        }
    }
    if(s->top!=0)
    {
        printf("error3n");
        exit(-1);
    }
    return s->data[s->top];
}
int main()
{
    char arr[]="325*+7-";
    printf("%d",count(arr));
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290108.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号