首页 > 编程语言 >周六900C++班级-2023.2.18-栈2

周六900C++班级-2023.2.18-栈2

时间:2023-02-18 13:11:06浏览次数:58  
标签:900 中缀 后缀 18 元素 C++ 有栈 波兰 表达式

栈练习2

  1. 请写出使用stack头文件定义一个名称为q的整型栈_stack<int>q;_____
  2. 设当前有栈q,元素x,请写出将元素x入栈push的程序q.push(x);
  3. 设当前有栈q,元素x,请写出 出栈pop 的程序q.pop();
  4. 设当前有栈q,元素x,请写出 获取栈顶top 的程序q.top();
  5. 设当前有栈q,元素x,请写出 判断空栈empty 的程序q.empty();
  6. 设当前有栈q,元素x,请写出 获取栈中元素size 的程序q.size();
  7. 设当前有栈q,元素x,请写出 清空栈中元素clear 的程序while(!q.empty())q.pop();
  8. 在执行出栈pop、栈顶top以及清空clear操作时,应该提前判断栈是否为空empty,不然会导致程序运行时错误RE(√)
  9. 中缀表达式1+2的后缀表达式为1 2 +(√)
  10. 中缀表达式1+2*4的后缀表达式为1 2 4 * +(√)
  11. 中缀表达式1+2*(3-4)的后缀表达式为1 2 3 4 - * +(√)
  12. 后缀表达式2 3 +  4 *的中缀表达式为(2+3)*4 (√)
  13. 后缀表达式2 3 * 4 +的中缀表达式为2*(3+4)(×) 2*3+4
  14. 后缀表达式1 2 + 3 4 + * 2 +的中缀表达式为(1+2)*(3+4)+2(√)
  15. 前缀表达式* + 1 2 + 3 4 的计算结果是21(√)
  16. 前缀表达式+ * 1 2 3的中缀表达式是1*2+3(√)
  17. 中缀表达式1+2+3的前缀表达式是+ 1 + 2 3 或 + + 1 2 3
  18. 字符数组的atof()方法是将字符串变成浮点数(√)
  19. 字符数组的atoi()方法是将字符串变成整型
  20. 字符数组的atol()方法是将字符串变成长整型

5695: 数据结构―逆波兰表达式

 

描述

逆波兰表达式是一种把运算符后置的算术表达式,例如普通的表达式2+3的逆波兰表示法2 3 +。逆波兰表达式的优点是运算符之间不必有优先级关系,也不用括号, 

例如(2+3)*4的波兰表达式为2 3 +  4 *;本题求解逆波兰表达式的值,其中运算法只有* + - /.每个数据均为小于10的正整数。

输入

 

输入数据有多组,每组为一行逆波兰表达式,其中运算符和运算数之间用空格表示,不超过50个字符。

输出

 

每组在一行中输出逆波兰表达式的值,保留2位小数。

 

样例输入

 2 3 +  4 *

样例输出

20.00

#include<bits/stdc++.h>
using namespace std;    
char a[1001];
int f;
double cal(double x,double y,char op)
{
    switch(op)
    {
        case '+':return x+y;break;
        case '-':return y-x;break;
        case '*':return x*y;break;
        case '/':return y/x;break;
    }
}
int main()
{
    while(cin>>a)
    {
        f = 1;
        stack<double>q;
        q.push(atof(a));
        while(getchar()!='\n')
        {
            cin>>a;
            if(a[0]>='0' && a[0]<='9')q.push(atof(a));
            else{
                double x = q.top();q.pop();
                double y = q.top();q.pop();
                double z = cal(x,y,a[0]);
                q.push(z);
            }
        }
        printf("%.2f\n",q.top());
    }
    
     return 0;
}

 

标签:900,中缀,后缀,18,元素,C++,有栈,波兰,表达式
From: https://www.cnblogs.com/jyssh/p/17132387.html

相关文章

  • 如何在 C++ 应用程序中集成 Spire.XLS for C++
    Spire.XLSforC++ 是一个Excel库,供开发人员在任何类型的C++应用程序中操作Excel文档(XLS、XLSX、XLSB和XLSM)。本文演示了如何以两种不同的方式将Spire.XLSforC......
  • c++ 计算代码中两个点的毫秒差
    #include<chrono>intmain(){autot1=std::chrono::high_resolution_clock::now();//获取第一个时间点//这里放需要计时的代码autot2=std::ch......
  • es5中的对象定义方式 三种 js 230218
    第一种使用Object构造方法第二种直接使用花括号定义第三种使用构造方法第四种详情等es6的知识点......
  • offset与scroll和client的异同比较 js 230218
    ......
  • 数据结构刷题2023.02.18小记
    连通分量一个无向图的连通分量是其极大的连通子图无向图中任意两个节点之间有连通,则称为连通图。每一个非连通图可分为几个极大连通部分,每一个极大连通子图称为连通分量;......
  • 【LeeCode】718. 最长重复子数组
    【题目描述】给两个整数数组 ​​nums1​​ 和 ​​nums2​​ 两个数组中 公共的 、长度最长的子数组的长度 。​​​https://leetcode.cn/problems/maximum-length-......
  • 回到顶部的功能实现 js 230218
    主要事件1,滚动事件body标签的scroll事件在事件中捕捉html的scrollTop数据对这个数据进行判断如果大于一定的值,就让“回到顶部”的盒子显示否则就让它隐藏2,点击事件为“回到......
  • 数的计数 c++
    数的计数题目描述我们要求找出具有下列性质数的个数(包含输入的自然数n),先输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理:(1)、不作任何处理;(2)、在它......
  • 2.18杂
    先写一道题CF5E#include<bits/stdc++.h>#definemaxn1000005usingnamespacestd;inlineintread(){intx=0,f=1;charc=getchar();while(c<......
  • ubuntu18.04 添加python3.8环境
    默认是3.6,最好不要动,不要升级,直接加一个3.8环境进去就好。1、准备工作sudoaptupdatesudoaptinstallsoftware-properties-common 2、将DeadsnakesPPA添加到系......