sdut 数据结构实验之栈二:一般算术表达式转换成后缀式

银河麒麟系统V10 Server SP1 安装Oracle 19c •oracle-database-preinstall-19c 这个工具会自动配置系统参数,创建 oracle 用户和组。比较方便。•••••银河麒麟高级服务器操作系统V10 - 国产操作系统、银河麒麟、中标麒麟、开放麒麟、星光麒麟——麒麟软件官方网站。 阅读详情
Problem Description
对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。
Input
输入一个算术表达式,以‘#’字符作为结束标志。
Output
输出该表达式转换所得到的后缀式。
Example Input
a*b+(c-d/e)*f#
Example Output
ab*cde/-f*+
Hint
 
Author
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define INIT_STACK_SIZE 100000
#define stackincrement 100
typedef int element ;
typedef struct
{
    element *base,*top;
    int stacksize;
} Sqstack;
int Initstack(Sqstack *s)
{
    s->base=(element *)malloc(INIT_STACK_SIZE*sizeof(element ));
    if(!s->base)
        return -1;
    s->top=s->base;
    s->stacksize=INIT_STACK_SIZE;
    return 0;
}
int Pushstack(Sqstack *s,char ch)
{
    if(s->top-s->base>=s->stacksize)
    {


        s->base=(element *)realloc(s->base,(INIT_STACK_SIZE+stackincrement)*sizeof(element));
        if(!s->base)  return -1;
        s->top=s->base+s->stacksize;
        s->stacksize+=stackincrement;
    }
    *(s->top++)=ch;
    return 0;


}
int Popstack(Sqstack *s)
{
    if(s->top==s->base) return -1;
    --s->top;
    return 0;
}
int  panduan(char ch)   //比较字符的优先级
{
    if(ch=='*'||ch=='/')
        return 3;
    else if(ch=='+'||ch=='-')
        return 2;
    else if( ch=='#')
        return 1;
    else
        return 0;
}
void biaoda(Sqstack *s)
{
    int k=0;
    int i;
    char ch[100],a[100];
    scanf("%s",ch);
    Pushstack(s,'#');
    for(i=0; i<strlen(ch); i++)
    {
        if(ch[i]=='*'||ch[i]=='/'||ch[i]=='+'||ch[i]=='-')  //当字符为加减乘除时,如果大于栈顶元素优先级,则直接入栈,否则栈顶元素出栈
        {
            if(panduan(ch[i])>panduan(*(s->top-1)))
            {
                Pushstack(s,ch[i]);
            }
            else
            {
                while(panduan(ch[i])<=panduan(*(s->top-1)))
                {
                    a[k++]=*(s->top-1);
                    Popstack(s);
                }
                Pushstack(s,ch[i]);
            }
        }
        else if(ch[i]=='(')  //当字符为左括号时,直接入栈
            Pushstack(s,'(');
        else if(ch[i]==')')    //当字符为右括号时,栈顶元素出栈,直到遇到左括号,左括号出栈
        {
            while(*(s->top-1)!='(')
            {
                a[k++]=*(s->top-1);
                Popstack(s);
            }
            Popstack(s);
        }
        else if(ch[i]=='#')   //'#'为结束标志,栈里剩余元素全部出栈
        {
            while(*(s->top-1)!='#')
            {
                a[k++]=*(s->top-1);
                Popstack(s);
            }


        }
        else
        {
            a[k++]=ch[i];
        }


    }
    for(i=0; i<k; i++)   //输出表达式
        printf("%c",a[i]);
    printf("\n");
}
int main()
{
    Sqstack s;
    Initstack(&s);
    biaoda(&s);
    return 0;
}













从AAAI 2025被拒到ACM MM 2025录用:我的论文投稿经验与教训总结 本文分享了作者从AAAI 2025被拒到ACM MM 2025录用的论文投稿经验与教训。详细解析了格式要求、可复现性清单等关键细节,提供了精准转投策略和提升录用概率的实用技巧,帮助研究者避免常见错误并优化投稿策略。 阅读详情

相关推荐

用Python实现斗地主游戏(终端版)

马上就要过年了 大家也都放假了吧 过年必不可少的活动 打牌! 今天带大家来写一份斗地主 (又是好多天没怎么更新,忙成狗啊) 那么实现一个斗地主呢 我们肯定要先完善卡牌系统 from collections import Counter import numpy as np import itertools def cmp_to_key(mycmp): 'Convert a cmp= function into a key= function' class K: def _

Miku_wx的博客 9854

数据结构实验之栈二:一般算术表达式转换成后缀式

题目描述 对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。 输入 输入一个算术表达式,以‘#’字符作为结束标志。 输出 输出该表达式转换所得到的后缀式。 示例输入 a*b+(c-d/e)*f# 示例输出 ab*cde/-f*+ 提示   来源   示例程序 #include #

空白页 848

CMake、Make、MinGw、Clang、Llvm、GCC、MSVC的区别

除开 GCC (GNU 编译器集合) 以外,MinGW 还包含有一些其他的 GNU 程序开发工具;的缩写,MinGw是windows版本的gcc集合。并不仅是一个 C/C++ 编译器,而是一套。是微软开发的VC运行时库,3、Make和CMake是。

m0_37698164的博客 1万+

数据结构实验之栈与队列二:一般算术表达式转换成后缀式

Problem Description 对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。 Input 输入一个算术表达式,以‘#’字符作为结束标志。 Output 输出该表达式转换所得到的后缀式。 Sample Input a*b+(c-d/e)*f# Sample Output ab*cde/-f*+ #include &lt;stdio.h&gt; ...

SDUT_OJ 341

使用PLINK做GWAS(2)

利用PLINK对单基因控制的性状进行定位,之前一篇文章粗滤的记录了一下使用PLINK的命令,本次博客主要记录一下如何根据SNP芯片的数据制作PLINK的格式,以及分析的步骤,最后数据的可视化。 首先,有的公司给的新片的数据就是一个excel表格,列表示的是样品,行表示的是基因型,基因型用ATCG构成,当然有的基因型是用数字0或者1表示的。下面我拿到的一个数据是15个样品构成的基因型,有13个样品是突变体,2个样品是野生型。 格式如下: 第二步:将此基因型存成csv文件,使用R进行读取,在R中制作pl

samhuairen的专栏 2921

人形机器人解耦驱动腿部设计与FAST性能优化

机器人运动控制的核心在于动力学解耦与能量效率优化。通过多连杆机构设计,可以实现关节运动的独立控制,显著降低惯性叠加和能量损耗。DecARt Leg采用创新的齿轮-四杆复合机构,将腿部伸缩与摆动运动完全解耦,配合多杆踝关节传动系统,实测行走速度可达4.18m/s。这种解耦设计不仅提升了动态性能,其提出的FAST指标更为腿部构型提供了量化评估基准,在仓储物流、地形适应等场景展现出显著优势,为人形机器人运动控制提供了新的技术路径。

weixin_33759613的博客 238

数据结构实验之栈二:一般算术表达式转换成后缀式 SDUT

数据结构实验之栈二:一般算术表达式转换成后缀式 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。 输入 输入一个算术表达式,以‘#’字符作为结束标志。 输出 输出该表达式转换所得到的后缀式。 示例输入 a*b+(c-d/e)*f#

Grit_ICPC的博客 665

EMD-LSTM时序预测 | MATLAB实现基于EMD-LSTM时间序列预测(EMD分解结合LSTM长短期记忆神经网络)

EMD-LSTM时序预测 | MATLAB实现基于EMD-LSTM时间序列预测(EMD分解结合LSTM长短期记忆神经网络)

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 656

数据结构实验之栈二:一般算术表达式转换成后缀式 (sdut oj 2132)

点好多啊!!! 2333~

rain_snowing的博客 847

单细胞转录组数据分析中的基因ID注释转换问题:如何解决才能注释所有的UMIcount数据?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1126

PyTorch生成式人工智能(3)——使用PyTorch构建神经网络

在本节中,我们使用 PyTorch 在简单数据集上构建了一个神经网络,训练神经网络来映射输入和输出,并通过执行反向传播来更新权重值以最小化损失值,并利用 Sequential 类简化网络构建过程;介绍了获取网络中间值的常用方法,以及如何使用 save、load 方法保存和加载模型,以避免再次训练模型。

盼小辉丶的博客 1万+

SDUT-2132 数据结构实验之栈与队列二:一般算术表达式转换成后缀式

SDUT-2132 数据结构实验之栈与队列二:一般算术表达式转换成后缀式 Description 于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。 Input 输入一个算术表达式,以‘#’字符作为结束标志。 Output 输出该表达式转换所得到的后缀式。 Sample Input a*b+(c-d/e)*f# Sample Output abcde/-f+ 本题思路: ...

胡小涛的博客 538

Cilium动手实验室: 精通之旅---5.Mutual Authentication with Cilium

在Cilium 入门实验室中,您将在受《星球大战》启发的场景中实施高级第 3-7 层网络策略。在实验结束时,您将实施强大的网络策略,并通过微分段保护 Empire 免受来自叛乱的攻击。在本实验中,您将重新部署《星球大战》演示应用程序,但除了网络策略之外,您还将了解如何在工作负载之间实施相互身份验证。

Q先生 1397

SDUT 2132 数据结构实验之栈二:一般算术表达式转换成后缀式

数据结构实验之栈二:一般算术表达式转换成后缀式 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。 输入 输入一个算术表达式,以‘#’字符作为结束标志。 输出 输出该表达式转换所得到的后缀式。

Shannon-Nansen 270

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

sdut oj2132数据结构实验之栈二:一般算术表达式转换成后缀式

题目链接:点击打开链接 数据结构实验之栈二:一般算术表达式转换成后缀式 Time Limit: 1000MS Memory limit: 65536K 题目描述 对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。 输入 输入一个算术表达式,以‘#’字符作为结束标志。 输出 输出该表达式转换所得到的后缀式。 示例输入 a*b+(

Annfan123的博客 521

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

数据结构实验之栈与队列二:一般算术表达式转换成后缀式SDUT2132

数据结构实验之栈二:一般算术表达式转换成后缀式   Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。 输入 输入一个算术表达式,以‘#’字符作为结束标志。 输出 输出该表达式转换所得到的后缀式。 示例输入 a*b+(c-d/e)*f# 示例...

Allinone99的博客 800

SDUT OJ 数据结构实验之栈与队列二:一般算术表达式转换成后缀式

数据结构实验之栈与队列二:一般算术表达式转换成后缀式 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description 对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。 Input 输入一个算术表达式,以‘#’字符作为结束标志。 Output 输出该表达...

CHEN_ZAN_YU的博客 619

SDUt OJ数据结构实验之栈与队列二:一般算术表达式转换成后缀式

数据结构实验之栈与队列二:一般算术表达式转换成后缀式 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description 对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。 Input 输入一个算术表达式,以‘#’字符作为结束标志。 Output 输出该表达...

CHEN_ZAN_YU的博客 447

sdut_2132_数据结构实验之栈与队列二:一般算术表达式转换成后缀式

数据结构实验之栈与队列二:一般算术表达式转换成后缀式 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description 对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。 Input 输入一个算术表达式,以‘#’字符作为结束标志。 Output 输出该表达...

Xiaojk的博客 427

SDUT2132数据结构实验之栈二:一般算术表达式转换成后缀式

#include using namespace std; void transf(char mid[],char suf[],char stack0[]) { int is=0,im; stacks; for(im=0;mid[im]!='#';im++) { if(mid[im]>='a'&&mid[im]<='z') {

nar666的博客 367
上一篇: sdut 数据结构实验之栈:行编辑器
下一篇: sdut 数据结构实验之栈三:后缀式求值
Endless21
博客等级 码龄10年 1粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值