栈的应用之逆波兰表达式(后缀表达式)(C语言版)

波兰式、逆波兰式与表达式求值 波兰式、逆波兰式与表达式求值   《数据结构》中关于栈的解释经常会涉及到逆波兰式,波兰式,中缀式表达式的求值问题。但是,十分惭愧,整个大一阶段, 数据结构的课程没有上够5节,没有意识要学习,吃亏真的很大,只能现在恶补了。废话不说了,进入正题。 1. 中缀表达式 人类最熟悉的一种表达式1+2,(1+2)*3,3+4*2+4等等都是中缀表示法。对于人们来说,也是最直观的一种... 阅读详情

逆波兰表达式的概念

又称为后缀表达式,其特点是操作符位于操作数之后,目前,这儿只解决传入的字符串为逆波兰表达式的问题!!

例如:表达式为: int ptr[] = { 12, 3, 4 , ‘+’, ‘*’, 6, ‘-‘, 8, 2, ‘/’, ‘-‘}; 已经将此表达式放入数组中存储

那么如何解决此类问题呢??

思路在此
这里写图片描述

代码敬上

//b、逆波兰表达式(后缀表达式)求值

int IsNumber(char ch)                            //判断该字符是否为数字   ,是返回1, 不是返回0
{
    if ('-' == ch || '+' == ch ||
        '*' == ch || '/' == ch)
        return 0;
    else
        return 1;
}

int RPNValue(int* Ptr, int _size)
{
    assert(Ptr);                                                         //参数检测

StackD s;
int size = _size;
int i = 0;

StackDInit(&s, size);                                                //定义栈
if ('\0' == (char)Ptr[i])                                            //空的逆波兰表达式
{
    printf(
C语言中缀表达转逆波兰表达 假设表达式由数字和双目四则运算符+,-,*,/构成。试利用栈实现一个算法,将一个通常书写形式且书写正确的表达式转换为逆波兰式(后缀表达式),同时将转换后的逆波兰式求值,最后输出逆波兰式及最终的求值结果。 输入格式 输入共有一行,为待求值的表达式,以换行结束。表达式保证是合法的,表达式中的整数在[0,9][0,9]以内,表达式长度不超过2020。表达式中仅包含+,-,*,/以及数字(其中/表示整除),不会出现其他字符。 输出格式 输出有两行,第一行为逆波兰式的结果,第二行为输入表达式的正确计算结... 阅读详情

相关推荐

逆波兰表达式(后缀表达式)C++实现

1 何谓逆波兰表达式 逆波兰表达式又称为后缀表达式,是波兰逻辑学家J・卢卡西维兹(J・ Lukasewicz)于1929年首先提出的一种表达式的表示方法。 例如: 1 + 2 + 3,转换为逆波兰表达式:1 2 3 + +。 1 + 2 * 3,转换为逆波兰表达式:1 2 3 * +。 对于我们而言,中缀表达式是最熟悉也是最直观的一种求值方式,但是计算机处理中缀表达式并不方便。 对于计算机而言,逆波兰表达式是最优、最简洁、最方便检索的一种表达式形式。因为逆波兰表达式没有括号,并且严格遵循从左到右运算。只需

qq_43929617的博客 6107

栈运用 逆波兰表达式 C语言

逆波兰表达式即后缀表达式 输入逆波兰表达式输出结果 大致思路: 输入字符,注意字符与字符之间间隔,故创建缓存数组 将字符转化为浮点数后压入栈,因逆波兰表达式会将优先级表现出来,则将浮点数遇见符号进行计算即可,计算结果再压入栈等待与后面的浮点数再遇见输入的符号 #include <stdio.h> #include <stdlib.h> #include <ctype....

qq_40519283的博客 1217

栈求表达式的值(C语言版)

通过前面章节的学习,读者已经了解了什么是栈以及栈存储结构的 2 种实现方式(顺序栈和链栈)。在此基础上,本节教读者用栈解决一个实际问题:如何用栈结构求一个表达式的值?所谓表达式,就是由变量、常量以及运算符组合而成的式子。其中,常用的运算符无非!(阶乘运算符)、^(指数运算符)、+、-、*、/ 、( ) 这几种,比如就是一个表达式。那么,如何用栈结构求一个表达式的值呢?实际上,已经有前辈设计好了一种完美的解决方案。

数据结构和算法教程(C语言版) 1326

串口调试神器诞生记:我是如何用Cursor+AI自动生成C#上位机的(含VSCode插件清单)

本文详细介绍了如何利用Cursor和AI技术快速开发C#上位机程序,实现高效的串口通讯调试。从开发环境搭建到代码自动生成,再到性能优化和功能增强,全面展示了AI辅助开发在串口调试中的实际应用和显著效率提升。

weixin_28340315的博客 300

别再手动算重量了!用C++给UG/NX写个自动计算零件质量与质心的插件(附完整源码)

本文详细介绍了如何使用C++为UG/NX开发智能质量分析插件,实现零件质量与质心的自动计算。通过结合NXOpen和UF_MODL API,设计高效的数据结构和批量处理机制,大幅提升机械设计效率。文章包含完整源码和实用技巧,帮助工程师告别手动计算,适用于复杂装配体的自动化工程计算。

weixin_30247307的博客 131

C++11并发与多线程笔记(2) 线程启动、结束,创建线程多法、join,detach

第二节 线程启动、结束,创建线程多法、join,detach 一、范例演示线程运行的开始 程序运行起来,生成一个进程,该进程所属的主线程开始自动运行;当主线程从main()函数返回,则整个进程执行完毕 主线程从main()开始执行,那么我们自己创建的线程,也需要从一个函数开始运行(初始函数),一旦这个函数运行完毕,线程也结束运行 整个进程是否执行完毕的标志是:主线程是否执行完,如果主线程执行完毕了,就代表整个进程执行完毕了,此时如果其他子线程还没有执行完,也会被强行终止【此条有例外,以后会解释】 创建

qq_38231713的博客 1万+

YOLOv11+SAHI实战:5步搞定无人机航拍小目标检测(附VisDrone数据集调参技巧)

本文详细介绍了如何结合YOLOv11目标检测框架与SAHI切片推理技术,高效解决无人机航拍图像中的小目标检测难题。通过VisDrone数据集调参技巧和5步实战指南,帮助开发者快速构建高性能检测系统,显著提升小目标检测的准确率和效率。

rum55的博客 190

Python教程:一文了解Python的深拷贝与浅拷贝

理解 Python 中的深拷贝(deep copy)和浅拷贝(shallow copy)是非常重要的,特别是在处理嵌套结构的数据时。让我们深入探讨这两个概念,并通过代码示例进行说明。

旦莫的博客 3968

【数据集】2019年中国1km格网河网密度数据集

中国1km格网河网密度数据集

WW、forever的博客 1344

ardupilot BMI088加速度陀螺仪学习

本节主要记录ardupilot 中BMI088传感器的学习过程,欢迎批评指正。BMI088是一款高性能6轴惯性传感器,由16位数字三轴±24g加速度计和16位数字三轴±2000°/ s陀螺仪组成。 BMI088允许高精度测量方向和沿三个正交轴的运动检测。BMI088具有高振动鲁棒性和3 x 4.5 x0.95mm³的小尺寸,是用于无人机和机器人应用等恶劣环境的高性能IMU中的独特产品。 BMI088专门设计用于有效抑制由于PCB上的共振或整个系统的结构而可能发生的振动。 除了高振动稳定性外,BMI088的出

陌城烟雨 2056

华为OD技术面八股_C++_05

汇总华为OD技术面C++方向技术面八股文,提供详细解答。

qq_45776114的博客 413

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: 栈应用之括号匹配问题(C语言版)
下一篇: 栈应用之简单迷宫问题(C语言版)
Code_zx
博客等级 码龄9年 83粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值