今天就是一个模板题,其实就是用栈来进行后缀表达式的求解,很简单。
4.6日每日一题——后缀表达式
🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人
✨联系方式:2201891280(QQ)
⏳全文大约阅读时间: 20min
全文目录
☘前言☘
解题思路1
📑写在最后
P1449 后缀表达式
解题思路1
读入元素,然后按照栈的思路求解就好了
#include <stdio.h> #include <string.h> #include <ctype.h> char s[1001]; int stack[1001]; int main(){ int stacktop = -1; while(fgets(s, 1000,stdin)){ int len = strlen(s),ans = 0,i; char *start = s,*end = s; for(i = 0;i < 2;++i){//拿到前两个数字进栈 int tmp = 0; while(isdigit(*end)) tmp *= 10,tmp += (*end - '0') ,end++; stack[++stacktop] = tmp,end++,start = end; } while(stacktop != -1){ if(isdigit(*start)){ int tmp = 0; while(isdigit(*end)) tmp *= 10,tmp += (*end - '0') ,end++; stack[++stacktop] = tmp,end++,start = end; } else if(*start == '+'){ stack[stacktop - 1] += stack[stacktop]; --stacktop,start++,end = start; } else if(*start == '-'){ stack[stacktop - 1] -= stack[stacktop]; --stacktop,start++,end = start; } else if(*start == '*'){ stack[stacktop - 1] *= stack[stacktop]; --stacktop,start++,end = start; } else if(*start == '/'){ stack[stacktop - 1] /= stack[stacktop]; --stacktop,start++,end = start; } else if(*start == '@'){ ans = stack[stacktop--]; break; } } printf("%d\n",ans); } return 0; }
挺好
📑写在最后
今天就这样,明日再见0.0