洛谷 P1449 后缀表达式(用数组模拟栈)

该博客主要介绍了如何利用栈解决洛谷P1449题目的后缀表达式计算问题。通过遇到数字压栈,遇到运算符时弹出栈顶两个元素进行运算并将结果压栈,最终栈底元素即为表达式的结果。提供的代码示例采用了数组来模拟栈的操作,适合巩固基础的栈知识。
摘要由CSDN通过智能技术生成

题目链接https://www.luogu.org/problemnew/show/P1449
题目思路:由题目意思可以想到用栈的思想来做,具体操作是遇到数字压入栈,遇到运算符就弹出两个被操作的数并将运算的结果压入栈。最后在栈底元素就是表达式的值。
代码如下:(采用数组模拟栈的方法)

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
int main(){
    char c[1005];
    gets(c);//读入
    int len=strlen(c);
    int stack[1005];
    int top=0;
    int i=0,x=0;
    while(i<=len-2){//直接避免'@'
        if(c[i]>='0'&&c[i]<='9'){
            x*=10;
            x+=c[i]-'0';字符转化为数字
        }
        else if(c[i]=='.'){
            stack[++top]=x;//数字入栈
            x=0;
        }
        else if(c[i]=='+'){
            stack[--top]+=stack[top+1];//对被操作数进行操作
        }
        else if(c[i]=='-'){
            stack[--top]-=stack[top+1];
        }
        else if(c[i]=='*'){
            stack[--top]*=stack[top+1];
        }
        else if(c[i]=='/'){
            stack[--top]/=stack[top+1];
        }
        i++;//下一个字符
    }
    printf("%d\n",stack[top]);输出
return 0;
}

总结:这道题同来练习基础的栈还是可以的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值