机试_3_数据结构(一)_习题
数据结构(一)——练习题
学习完第三章-数据结构(一)之后,当然要做相应地练习啦~
注:上述习题都可以在牛客进行测试。
例如,第2题链接:计算表达式_牛客题霸_牛客网 (nowcoder.com),其他题目在“题目列表”中基本都可以找到。
另外,此文章仅仅是提供解题思路,并非最优解。
1、堆栈的使用–吉林大学
描述
堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。其中 push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。(注:本题有多组输入,可以参考该网址:https://www.nowcoder.com/discuss/276)
输入描述:
对于每组测试数据,第一行是一个正整数 n(0 < n <= 10000)。而后的 n 行,每行的第一个字符可能是’P’或者’O’或者’A’;如果是’P’,后面还会跟着一个整数,表示把这个数据压入堆栈;如果是’O’,表示将栈顶的值 pop 出来,如果堆栈中没有元素时,忽略本次操作;如果是’A’,表示询问当前栈顶的值,如果当时栈为空,则输出’E’。堆栈开始为空。
输出描述:
对于每组测试数据,根据其中的命令字符来处理堆栈;并对所有的’A’操作,输出当时栈顶的值,每个占据一行,如果当时栈为空,则输出’E’。
示例1
输入:
3
A
P 5
A
4
P 3
P 6
O
A
输出:
E
5
3
题解:
#include <iostream>
#include <cstdio>
#include <stack>using namespace std;/*** 堆栈的使用* @return*/
int main() {int n;while (cin >> n) {stack<int> stack;for (int i = 0; i < n; ++i) {char instruction;cin >> instruction;if (instruction == 'P') {int num;cin >> num;stack.push(num);} else if (instruction == 'O') {if (!stack.empty()) {stack.pop();}} else {if (stack.empty()) {cout << "E" << endl;} else {cout << stack.top() << endl;}}}}return 0;
}
2、计算表达式–上海交通大学
描述
对于一个不存在括号的表达式进行计算
输入描述:
存在多组数据,每组数据一行,表达式不存在空格
输出描述:
输出结果
示例1
输入:
6/2+3+3*4
输出:
18
题解:
解题:
1. 在表达式的结尾加上"#",表示结束符,然后从左到右遍历计算式
2. 若为操作数num,则压入操作数栈中
3. 若为运算符,则依次弹出运算符栈中比当前运算符优先级高的运算符;同时,依次弹出操作数栈中的元素(注意:先弹出的为右操作数)然后,执行相应的计算,将计算结果压入到操作数栈中。最后,将当前的运算符压入到运算符栈中。
4. 若为结束符"#",依次弹出运算符栈中的运算符,依次弹出操作数栈中的元素,执行计算后将结果压入栈中
5. 最后栈中只剩一个元素,即为计算结果。
#include <iostream>
#include <cstdio>
#include <stack>
#include <string>
#include <map>using namespace std;/*** 计算运算符的操作结果* @param opera 运算符* @param leftNum 左操作数* @param rightNum 右操作数* @return*/
double calculate(char opera, double leftNum, double rightNum);/** map存放运算符的优先级*/
map<char, int> priority = {{'$', 0},{'+', 1},{'-', 1},{'*', 2},{'/', 2}
};/*** 计算表达式--上海交通大学* @return*/
int main() {string str;while (cin >> str) {/** 给表达式加上结束符*/str += "#";stack<char> operaStack;stack<double> numStack;string num = "";for (int i = 0; i < str.size(); ++i) {char cur = str[i];if (cur == '#') {/** 结束符* 1. 先将结束符#前面的num压入操作数栈中* 2. 依次弹出运算符栈中的运算符* 3. 依次弹出操作数栈中的操作符(注:先弹出的是右操作数)* 4. 执行相应计算,再将计算结构压入栈中*/if (num != "") {numStack.push(stod(num));num = "";}while (!operaStack.empty()) {char opera = operaStack.top();operaStack.pop();double rightNum = numStack.top();numStack.pop();double leftNum = numStack.top();numStack.pop();numStack.push(calculate(opera, leftNum, rightNum));}} else if ('0' <= cur && cur <= '9') {/** 0~9,将数字拼接到num中*/num += cur;} else {/** 操作符* 1. 先将操作符前面的num压入操作数栈中* 2. 依次弹出运算符栈中的运算符比当前运算符优先级高的运算符* 3. 依次弹出操作数栈中的操作符(注:先弹出的是右操作数)* 4. 执行相应计算,再将计算结构压入栈中* 5. 将当前的运算符压入运算符栈中*/if (num != "") {numStack.push(stod(num));num = "";}while (!operaStack.empty() && priority[operaStack.top()] >= priority[cur]) {char opera = operaStack.top();operaStack.pop();double rightNum = numStack.top();numStack.pop();double leftNum = numStack.top();numStack.pop();numStack.push(calculate(opera, leftNum, rightNum));}operaStack.push(cur);}}/** 此时,栈中有且只有一个元素,即为计算结果*/cout << numStack.top() << endl;}return 0;
}double calculate(char opera, double leftNum, double rightNum) {double res = 0;switch (opera) {case '+':res = leftNum + rightNum;break;case '-':res = leftNum - rightNum;break;case '*':res = leftNum * rightNum;break;case '/':res = leftNum / rightNum;break;default:break;}return res;
}
相关文章:
机试_3_数据结构(一)_习题
数据结构(一)——练习题 学习完第三章-数据结构(一)之后,当然要做相应地练习啦~ 注:上述习题都可以在牛客进行测试。 例如,第2题链接:计算表达式_牛客题霸_牛客网 (nowcoder.com)…...
《Hadoop篇》------HDFS与MapReduce
目录 一、HDFS角色职责总结 二、CheckPoint机制 三、Mapreduce序列化 四、Mapper 4.1、官方介绍 4.2、Split计算 4.3、Split和block对应关系 4.4、启发式算法 五、MapTask整体的流程 六、压缩算法 6.1、压缩算法适用场景 6.2、压缩算法选择 6.2.1、Gzip压缩 6.2…...
网络爬虫简介
前言 没什么可以讲的所以就介绍爬虫吧 介绍 网络爬虫(英语:web crawler),也叫网路蜘蛛(spider),是一种用来自动浏览万维网的网络机器人。其目的一般为编纂网络索引。 网路搜索引擎等站点通过…...
通过4个月的自动化学习,现在我也拿到了25K的offer
毕业后的5年,是拉开职场差距的关键时期。有人通过这5年的努力,实现了大厂高薪,有人在这5年里得到贵人的赏识,实现了职级的快速拔升,还有人在这5年里逐渐掉队,成了职场里隐身一族,归于静默。 而…...
分库分表了解
数据切分根据其切分类型,可以分为两种方式:垂直(纵向)切分和水平(横向)切分一:垂直(纵向)切分【基于表或字段划分,表结构不同】1:垂直分库根据业务…...
docker中 gitlab 安装、配置和初始化
小笔记:gitlab配置文件 /etc/gitlab/gitlab.rb 配置项jcLee95 的CSDN博客:https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/1…...
有哪些好用的C++Json库?
文章目录RapidJSONJSON for Modern CBoost.PropertyTreeJanssonPicoJSONC REST SDKnlohmann json(ky用的这个)jsoncpp(cw用的这个)RapidJSON RapidJSON是一个快速、高效的C JSON解析器和生成器,支持SAX和DOM两种解析模…...
Docker 快速上手学习入门教程
目录 1、docker 的基础概念 2、怎样打包和运行一个应用程序? 3、如何对 docker 中的应用程序进行修改? 4、如何对创建的镜像进行共享? 5、如何使用 volumes 名称对容器中的数据进行存储?// 数据挂载 6、另一种挂载方式&…...
深度学习笔记:误差反向传播(1)
1 计算图 计算图使用图(由节点和边构成的图)来表达算式。 如图,我们用节点代表运算符号,用边代表传入的参数,即可算出购买苹果和橘子的总价格。 2 计算图的局部计算 局部计算意味着每个节点只处理和其相关的运算&…...
锁相环(1)
PLL代表相位锁定环。顾名思义,如下图所示,PLL是一种具有反馈循环的电路,可将反馈信号的相/频率保持与参考输入信号的相/频率相同(锁定)。 如下图所示,如果参考输入和反馈输入之间存在相位差,则…...
2023金三银四跳槽必会Java核心知识点笔记整理
现在互联网大环境不好,互联网公司纷纷裁员并缩减 HC,更多程序员去竞争更少的就业岗位,整的 IT 行业越来越卷。身为 Java 程序员的我们就更不用说了,上班 8 小时需要做好本职工作,下班后还要不断提升技能、技术栈&#…...
二十四节气—雨水,好雨知时节,当春乃发生。
雨水,是二十四节气之第2个节气。 雨水节气不仅表明降雨的开始及雨量增多,而且表示气温的升高,意味着进入气象意义的春天。 雨水节是一个非常富有想象力和人情味的节气,在这一天,不管下不下雨都充满着一种雨意蒙蒙的诗…...
为什么要使用数据库?
随着互联网技术的高速发展,预计2020 年底全世界网民的数量将达到 50 亿。网民数量的增加带动了网上购物、微博,网络视频等产业的发展。那么,随之而来的就是庞大的网络数据量。 大量的数据正在不断产生,那么如何安全有效地存储、检…...
【原创】java+swing+mysql图书管理系统设计与实现
图书管理系统是一个比较常见的系统,今天我们主要介绍如何使用javaswiingmysql去开发一个cs架构的图书管理系统,方便学生进行图书借阅。 功能分析: 宿舍报修管理系统的使用角色,一般分为管理员和学生,管理员主要进行学…...
图论 —— 强连通分量
概念 连通图 无向图 G G G 中,若对任意两点 V i , V j V_i, V_j V<...
计算机网络(二):物理层和链路层,通道复用,MAC地址,CSMA/CD协议,PPP点对点协议
文章目录一、物理层主机之间的通信方式通道复用技术常见的宽带接入技术二、链路层MAC地址和IP地址分别有什么作用为什么有了MAC地址之后还需要IP地址为什么有了IP地址还需要MAC地址以太网中的CSMA/CD协议数据链路层上的三个基本问题PPP协议一、物理层 主机之间的通信方式 单工…...
英语基础-定语从句的特殊用法及写作应用
1. 定语从句的引导词省略的情况 1. that 引导定语从句,从句中缺宾语/表语,that可省略; This is the book that he likes. I like the shirt that you gave me. We do not agree on the plan that you make. China is not the country th…...
[数据结构]---八大经典排序算法详解
🐧作者主页:king&南星 🏰专栏链接:c 文章目录一、八大排序算法复杂度对比二、基于比较的排序算法1.冒泡排序2.选择排序3.插入排序4.希尔排序5.直观感受四种算法的时间复杂度三、基于非比较的排序算法1.基数排序2.箱(桶)排序四…...
Go语言设计与实现 -- 反射
Go的反射有哪些应用? IDE中代码的自动补全对象序列化fmt函数的相关实现ORM框架 什么情况下需要使用反射? 不能明确函数调用哪个接口,需要根据传入的参数在运行时决定。不能明确传入函数的参数类型,需要在运行时处理任意对象。 …...
利用5G工业网关实现工业数字化的工业互联网解决方案
5G工业网关是一种用于将工业生产环境中的数据连接到工业互联网的解决方案。它可以利用高带宽、高速率、低时延的5G网络连接工业现场的PLC、传感器、工业设备和云端数据中心,从而实现工业数字化。 物通博联工业互联网解决方案 物通博联5G工业网关的使用步骤&#x…...
朋友当上项目测试组长了,我真的羡慕了
最近我发现一个神奇的事情,我一个朋友居然已经当上了测试项目组长,据我所知他去年还是在深圳的一家创业公司做苦逼的测试狗,短短8个月,到底发生了什么? 于是我立刻私聊他八卦一番。 原来他所在的公司最近正在裁员&am…...
element-ui实现动态添加表单项并实现事件触发验证验证
需求分析:点击新增后新增一个月度活动详情,提交时可同时提交多个月度活动详情。点击某一个月度活动信息的删除后可删除对应月度活动信息 H5部分: <el-dialog :title"title" :visible.sync"open" append-to-body>…...
ThreadLocal 内存泄漏问题
1. 认识ThreadLocal java中提高了threadlocal,为每个线程保存其独有的变量,threadlocal使用的一个小例子是: public class ThreadLocalTest {public static void main(String[] args) {ThreadLocal<String> threadIds new ThreadLoc…...
【算法】两道算法题根据提供字母解决解码方法和城市的天际线天际线问题
算法目录解码方法Java解答参考:天际线问题Java解答参考:大家好,我是小冷。 上一篇了解了项目相关的知识点 接下来看下两道算法题吧,用Java解答,可能更能激发一下大脑思考。 解码方法 题目要求: 一条包含…...
Python-TCP网络编程基础以及客户端程序开发
文章目录一. 网络编程基础- 什么是IP地址?- 什么是端口和端口号?- TCP介绍- socket介绍二. TCP客户端程序开发三. 扩展一. 网络编程基础 - 什么是IP地址? IP地址就是标识网络中设备的一个地址 IP地址分为 IPv4 和 IPv6 IPv4使用十进制, IPv6使用十六进制 查看本机IP地址: l…...
超低成本DDoS攻击来袭,看WAF如何绝地防护
一、DDoS攻击,不止于网络传输层 网络世界里为人们所熟知的DDoS攻击,多数是通过对带宽或网络计算资源的持续、大量消耗,最终导致目标网络与业务的瘫痪;这类DDOS攻击, 工作在OSI模型的网络层与传输层,利用协…...
CF1795E Explosions? (单调栈)
传送门 题意: 有 n 个怪兽需要消灭,它们的生命值分别是 h [1],h [2]......h [n]. 我们可以使用两种技能: 技能 1:选择任意一个怪兽,使其生命值降低 1 点,并且需要 1 点能量值. 技能 2:选择任意…...
C++——二叉树排序树
文章目录1 二叉搜索树概念2 二叉搜索树操作与模拟实现2.1 二叉搜索树的查找非递归版本递归版本2.2 二叉搜索树的插入非递归版本递归版本2.3 二叉搜索树的删除非递归版本递归版本3 二叉搜索树的应用(K模型、KV模型)4 二叉搜索树的性能分析1 二叉搜索树概念…...
深拷贝浅拷贝的区别?如何实现一个深拷贝?
一、数据类型存储 JavaScript中存在两大数据类型: 基本类型 Number String null Undefined Boolean symbol引用类型 array object function 基本类型数据保存在在栈内存中 引用类型数据保存在堆内存中,引用数据类型的变量是一个指向堆内存中实际对象的…...
Linux应用编程下连接本地数据库进行增删改查系列操作
文章目录前言一、常用SQL操作语句二、相关函数解析三、连接本地数据库四、编译运行五、程序源码前言 本篇为C语言应用编程下连接Linux本地数据库进行增删改查系列操作。 在此之前,首先当然是你需要具备一定的数据库基础,所以下面我先列出部分常用的SQL…...
东莞最好的网站建设价格低/广州seo培训
满心热情与兴奋,最后变成了遗憾和伤心。 嗯,还有尴尬。 给61级讲Prim,课件合起来的话大概做了有一天多吧。 虽然没什么东西,但还是很用心地给他们写解释、流程,找例题习题,甚至还给他们出了一道题。 给他们…...
h5响应式网站/长沙营销型网站建设
在5G的大势所趋之下,手机厂商也逐渐展露了各自在5G上的布局,其中华为与OPPO两大头部厂商也都推出了自家的5G手机:华为Mate30 Pro 5G和OPPO Reno3 Pro。这两部双模5G手机可以说都是“黑科技”于一身,旨在为消费者带去更好的体验&am…...
怎么做网站下单/深圳百度推广seo公司
IE的时候图片在右边显示,而FF的时候图片在文字下面显示,现在如何做,才能让2个浏览器下都文字下方显示啊?QQ5650387 <html> <head><meta http-equiv"Content-Type" content"text/html; charsetut…...
中国建设银行网站会员登录/腾讯云域名注册官网
如何为企业量身制定行之有效的考核体系?如何有效激发员工的创业激情?如何通过企业绩效管理助推集团战略落地?阿米巴通过“81”绩效量化技术,解决了“考核什么”和“怎么考核”的技术问题,让员工不但要对过程负责&#…...
室内装饰设计师证书/seo专员岗位要求
UITextField属性 0. enablesReturnKeyAutomatically 默认为No,如果设置为Yes,文本框中没有输入任何字符的话,右下角的返回按钮是disabled的。 1.borderStyle 设置边框样式,只有设置了才会显示边框样式 text.borderStyle UITextBorderStyleRounded…...
做网站代理需要办什么执照/企业网站管理系统源码
密码错误频繁登录引发的”library cache lock”或”row cache lock”等待 对于正常的系统,由于密码的更改,可能存在某些被遗漏的客户端,不断重复尝试使用错误密码登录数据库,从而引起数据库内部长时间的”library cache lock”或”…...