【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


相关文章
|
缓存 异构计算 Perl
【毅力挑战】PCIe 每日一问一答(2022.04 归档)
【毅力挑战】PCIe 每日一问一答(2022.04 归档)
3642 3
【毅力挑战】PCIe 每日一问一答(2022.04 归档)
|
SQL 关系型数据库 MySQL
|
Python
Python 3.5 RuntimeError: can&#39;t start new thread
/*********************************************************************** * Python 3.5 RuntimeError: can't start new thread * 说明: * 测试的时候线程开得太多了,导致软件开始,不再能够被处理,卡死。
6795 0
|
12月前
|
缓存 C# Windows
C#程序如何编译成Native代码
【10月更文挑战第15天】在C#中,可以通过.NET Native和第三方工具(如Ngen.exe)将程序编译成Native代码,以提升性能和启动速度。.NET Native适用于UWP应用,而Ngen.exe则通过预编译托管程序集为本地机器代码来加速启动。不过,这些方法也可能增加编译时间和部署复杂度。
620 2
|
JSON 前端开发 测试技术
Javaweb之SpringBootWeb案例员工管理之新增员工的详细解析
Javaweb之SpringBootWeb案例员工管理之新增员工的详细解析
191 0
|
存储 关系型数据库 MySQL
mysql锁的知识点简述
了解和合理应用MySQL中的锁机制,对于设计高并发、高可用的数据库应用至关重要。在系统设计初期就要考量锁策略,根据实际使用场景灵活调整,以最小化锁竞争,提高事务处理速度。
118 0
|
Java C++
力扣(LeetCode)官网首发!史上首本Java语言实现LeetCode题解手册
最近小编无聊刷力扣(LeetCode)的时候看到了很多LeetCode都是用c++写的,就萌生了想给小伙伴分享一份用Java语言来实现的LeetCode题解答案: 今天就把这件事给安排了吧,分享几个用Java语言实现的开源LeetCode题解,也要感谢这些优秀的开源作者们,分享真的会让这个世界变得很美好。
388 0
|
前端开发
前端学习笔记202306学习笔记第四十二天-promise-promise的静态方法1
前端学习笔记202306学习笔记第四十二天-promise-promise的静态方法1
118 0
前端学习笔记202306学习笔记第四十二天-promise-promise的静态方法1
|
项目管理
CMMI之项目管理类核心框架
CMMI之项目管理类核心框架
255 0
|
开发工具 Android开发 Python
python中搭建pycharm开发环境
python中搭建pycharm开发环境
203 0