☘前言☘
今天就是一个模板题,其实就是用栈来进行后缀表达式的求解,很简单。
4.6日每日一题——后缀表达式
🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人
✨联系方式:2201891280(QQ)
⏳全文大约阅读时间: 20min
解题思路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