【4.6日题解】——后缀表达式(c代码表述)

简介: 【4.6日题解】——后缀表达式(c代码表述)

今天就是一个模板题,其实就是用栈来进行后缀表达式的求解,很简单。

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


相关文章
|
C语言 C++
【C语言】题目的多种解法分享3
【C语言】题目的多种解法分享3
94 1
|
存储 C语言
C语言题目的多种解法分享 2之字符串左旋和补充题
C语言题目的多种解法分享 2之字符串左旋和补充题
76 0
|
算法 程序员 C语言
全排列思路解析附C语言实现
全排列思路解析附C语言实现
|
6月前
|
存储
【例题】逆波兰表达式求值(图解+代码)
【例题】逆波兰表达式求值(图解+代码)
173 0
|
存储 C语言
C语言题解——倒置字符串(剑指Offer 第58题)
C语言题解——倒置字符串(剑指Offer 第58题)
95 0
C语言题解——倒置字符串(剑指Offer 第58题)
|
C语言
C语言题解——除自身以外数组的乘积(力扣 第238题)
这是力扣题库中的一个中等难题,说是存在一个整型数组,求出各元素位上除此数外其他元素的乘积,比如存在数组[1,2,3,4],按照题目应该该输出[24,12,8,6],我们的解题思想为:求出各元素的左积和右积(当然不包含自己),然后将左积与右积相乘,就可以得到目标积数,拿上面的例子来说,下标0的左积为1(默认数组外为1),右积为24,相乘得到目标积24,其他元素也是依次类推。下面来看看具体讲解吧
172 0
C语言题解——除自身以外数组的乘积(力扣 第238题)
|
C语言
【C语言】变种水仙花题解
题目入口: BC38 变种水仙花
【C语言】变种水仙花题解
|
机器学习/深度学习 人工智能 C语言
C语言典型例题二——杨辉三角
杨辉三角 1.杨辉三角最本质的特征是,它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。这就是我们用C语言写杨辉三角的关键之一。
127 0
|
算法 C语言
C语言典型例题四——斐波那契数列
Fibonacci(斐波那契)数列 求斐波那契数列的前40个数。这个数列有个特点:第1,2两个数为1,1。从第三个数开始,该数是其前面两个数之合。即该数列为1,1,2,3,5,8,13……。
187 0
|
C语言
C语言典型例题三——冒泡排序法
冒泡排序法 冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。
159 0