机试_3_数据结构(一)_习题

无线网卡选购指南:哪些型号支持Kali Linux的监听模式?附免驱动网卡推荐 本文详细解析了如何在Kali Linux下选购支持监听模式的无线网卡。核心在于选择兼容的芯片组,如Atheros AR9271和Ralink RT3070等经典型号,并提供了免驱动网卡推荐与实战配置指南,帮助安全研究人员和爱好者快速搭建无线测试环境。 阅读详情

数据结构(一)——练习题

学习完第三章-数据结构(一)之后,当然要做相应地练习啦~

注:上述习题都可以在牛客进行测试。

例如,第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;
}

DC-DC电源PCB布局实战:从EMI优化到热管理 本文深入探讨了DC-DC电源PCB布局的核心实战技巧。文章从分析电流环路入手,强调通过优化“黄金三角”布局以最小化环路面积,从而有效抑制EMI并提升效率。详细阐述了功率器件摆放、地线分割、敏感信号布线、电感下方铺铜策略以及热管理设计等关键步骤,为工程师提供了一套从理论到实践的完整布局指南。 阅读详情

相关推荐

集成电路模拟版图入门-版图基础学习笔记(四)

第三部分:版图的准备 2. 设计规则 3) Design Rule 2. 设计规则 4) 规则定义 4.1 NW(N WELL) 2. 设计规则 4) 规则定义 4.1 NW(N WELL) 2. 设计规则 4) 规则定义 4.2 PO(Poly) 2. 设计规则 4) 规则定义 4.3 M1(Metal1) 2. 设计规则 4) 规则定义 4.4 VIA 3. DRC文件 3.1 DRC:Design Rule Check,设计规则检查。 3.2 DRC程序了解有关

weixin_52955333的博客 6734

大胆预测一下《数据结构》期末机考题

写在前面 时间回到2021年12月份,突如其来的期末考试打的我们猝不及防,相信也给期末出卷老师带来了不小的压力,再加上20级是如此的特殊以及优秀,所以此次数据结构机考变成了闭卷。但天无绝人之路,闭卷的同时也意味着难度可能有所降低,参考往年的机考题,现大胆进行一波预测。(纯属个人臆想,什么都会的大佬请跳过) 还有本次软工是五个题目做出三个满分,分为函数题以及编程题。且根据老师的回答,函数题占大多数,可以想到函数题大概是有三个。但我个人感觉函数题比自己完整写一道题目更难,因为所要编写的函数要满足题目片段各种奇奇

西电卢本伟的博客 4460

在 Ansys CFX Pre 中配置 RGP 表的分步指南

掌握在 Ansys CFX Pre 中设置 RGP 表的技巧,以优化仿真精度和效率。

jkh920184196的博客 1664

数据结构复习.机考篇(c++)(严蔚敏版)

1.顺序表(可用vector代替) 插入 注意点: 1.插入前要判断插入位置是否合法 2.判断位置合法时注意可插位置为size+1,因为还可以插在尾部 3.插入时将插入位置后面的元素往后移动,建议用 (i- -) void insert(int pos, int va) { pos--; if (pos >= 0&& pos <= size) { for (int i = size; i > pos; i--) { data[i] = da

qq_58126670的博客 1425

python课程教学大纲-《Python语言基础》课程教学大纲

《Python语言基础》课程教学大纲课程名称:Python语言基础课程类别:专业选修课适用专业:电子信息工程考核方式:考查总学时、学分:32学时1.5学分其中讲授16学时,实验10学时,其他6学时一、课程性质、教学目标使学生在全面了解Python技术历史、现状与发展趋势的基础上,系统掌握Python基本概念、编程思想以及程序设计技术,具备熟练的Python编程技能和面向对象软件设计技术思想,完成本...

weixin_37988176的博客 3720

自偏置电流镜设计实例

自偏置电流镜设计实例 一、概述 ​ 众所周知,电流镜属于模拟电路设计中的一个基本模块,可为其他模块提供偏置电流,例如在放大器中提供偏置电流以形成尾电流源并确定直流偏置点。本文将会介绍一种自偏置的电流镜,从原理出发,并以0.18um的工艺进行设计和仿真。 二、原理 ​ 如图一所示的电路,也称之为Beta-multiply reference电路,其中M2的尺寸是M1的k倍。M3复制M4的电流,M2和M1的漏极电流相同,但是VGS并不相等。其中 VGS=2IμnCoxW/...

aonuanjiang的博客 1万+

数组实现栈

栈 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 数组实现栈 代码如下 public class ArrayStack { private int maxSize; private int top; p

xiaoxiaoxiaopb的博客 918

YOLOv11n-seg 实战指南:从训练到模型部署的完整流程

本文提供了YOLOv11n-seg实例分割模型从环境准备、数据标注到模型训练、验证及最终部署的完整实战指南。详细讲解了如何准备多边形掩码数据、配置关键训练参数、解读分割核心评估指标,并重点介绍了将模型导出为ONNX等格式进行部署的流程与优化技巧,帮助开发者高效完成从开发到生产的全链路实践。

weixin_29062255的博客 554

机试_3_数据结构(一)

本章学习基本的线性数据结构,包括向量、队列和栈。这些基础的数据结构是后续很多高级内容的基础。

Window_mouse的博客 739

从原理到落地:监控 SAP OData bgRFC 队列的全景实践指南

摘要(150字) 本文系统讲解SAP Gateway/Backend场景中bgRFC队列的监控方法。内容涵盖:1)监控必要性——确保异步可靠传输,及时识别失败消息;2)两种服务质量(EO/EOIO)对监控策略的影响;3)通过事务码SBGRFCMON和SPRO路径访问监控界面;4)关键授权S_BGRFC的配置要求;5)详细操作指南包括筛选条件和动作选项;6)标准巡检脚本;7)三个典型案例(认证错误、顺序阻塞、调度压力)的诊断与修复方案。全文提供完整的监控方法论和实战指导。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 286

第一章 电力电子仿真软件 PLECS简介

PLECS是瑞士Plexim公司开发的电力电子仿真软件,具有快速仿真、丰富元件库和热分析功能。软件提供单机版和嵌入MATLAB的版本,支持多平台安装且流程简单。首次运行需获取授权文件,提供60分钟演示模式。界面包含模型创建、帮助文档和元件库浏览器等功能区域,操作便捷。该软件是专业高效的电力电子系统仿真工具。

500

机试_6_数据结构(二)

本文介绍机试中考查的一些非线性数据结构,包括二叉树、二叉排序树、优先队列和散列表等较为高级的数据结构。

Window_mouse的博客 1045

UG NX二次开发(C#)-VS2022配置NX二次开发模板不能正常显示的问题

随着VS2022的发布,使用VS2022进行UG NX二次开发的人员也会越来越多,但是由于VS2022和以前的VS版本采用代码结构不同,而UG NX的二次开发编程模板还没有适应于VS2022的模板配置,所以不能正常的创建一个完整的工程。本文采用曲线救国的方式来实现VS2022下的UG NX二次开发。如果有读者能很好的解决模板配置,不吝赐教。

GimiGimmy 4274

华为od机试E卷刷题建议

华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2024e卷,od机试,2024E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2024华为od,如何备战华为od,华为od算法,华为od手撕代码,华为OD机试2024年最新题库,一文带你读懂华为OD,华为机试e卷

KJ.JK 2万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

2025最新华为OD机试,华为OD机试备考攻略,独家整理总结上岸技巧

很多人想重试本地部署DeepSeek,对接DeepSeek api,对于大多数小伙伴而言,门槛还是过高,即使部署成功,也会因为电脑配置等原因,只能部署 7B、8B 的版本,不是满血版的 671B 的 deepseek,体验不佳。4、 编码工具删除行 ctrl+d依旧可以使用,ctrl+c,+v ,+z 等均可正常使用,其他快捷键建议尽量莫用,尤其是有保存习惯的同学,不要用ctrl+s,否则会打开页面保存键,算弹出当前页面一次。如果需要上厕所,请在考试前提前准备好,避免考试中途离开座位,出现离开监控的情况。

学Java,找哪吒 7904

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

最新华为od机试E卷刷题建议

华为OD是Outsourcing Dispacth模式,是华为和外企德科联合招聘的简称。目前华为大多数是OD招聘。OD模式也是华为提出的一种新的用工形式,每年都会从OD项目挑优秀员工转为正编。所有OD和正式员工一样对待,没有差别,部门平时开会、评审等活动都是一起参加的,是同薪同酬,都是由华为的HR直接定的薪资,看的是我们技术能力。华为是大企业,能到华为上班也是有能力的,每个部门都有好多职位,是金子,在哪都会发光。

KJ.JK 6万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【华为OD机试】答疑 + 注意事项

【华为OD机试】答疑 + 注意事项

MISAYAONE的博客 8万+

2024最新华为od机试E卷刷题建议

华为OD是Outsourcing Dispacth模式,是华为和外企德科联合招聘的简称。华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2024e卷,od机试,2024E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2024华为od,如何备战华为od,华为od算法,华为od手撕代码,华为

KJ.JK 2万+

机试能力很差怎么办?哪些学校cs夏令营没有机试?

此外,面试组老师也是会关注机试成绩的,如果机试分数较低,在面试时很可能针对这一点被发问,需要提前做好答复准备。此外,在夏令营机试考核中,对字符串处理(字符串匹配、词频统计等)、搜索算法(DFS/BFS)、列表队列处理(增删查改)的考察较频繁,也需要多做准备。进入考场后首先要检查自己的设备硬件(键鼠等)是否正常,然后试着调试IDE,看看常见的代码提示、括号匹配、断点调试是否正常、编译器能否更换为自己常用的等等。其次,要学会读别人的代码,学习他人更简洁有效的思路,并试着举一反三,从而更快成长。

Baoyan_cs的博客 2391

2025A卷最新华为OD机试,独家整理总结上岸技巧,华为OD机试备考攻略(Python/JS/C/C++)

目前正在考的是2025A卷,按照华为OD往常的操作,E卷题目是由往年真题(E卷/A卷/B卷/C卷/D卷)+全新题目组成,也就是说2025A卷还会考到E卷、A卷、B卷、C卷、D卷的题目,比例大概是1道新题、2道旧题的样子。4、 编码工具删除行 ctrl+d依旧可以使用,ctrl+c,+v ,+z 等均可正常使用,其他快捷键建议尽量莫用,尤其是有保存习惯的同学,不要用ctrl+s,否则会打开页面保存键,算弹出当前页面一次。如果需要上厕所,请在考试前提前准备好,避免考试中途离开座位,出现离开监控的情况。

学Java,找哪吒 1万+

机试指南:Ch1:绪论 Ch2:枚举和模拟

《机试指南》1-2章 (超详细笔记 + OJ题解,含 题源提交网址)

Edward2022的博客 1965

2025A卷最新华为OD机试,独家整理总结上岸技巧,华为OD机试备考攻略

2025A卷最新华为OD机试,独家整理总结上岸技巧,华为OD机试备考攻略 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战华为od,华为od算法,华为od手撕代码,华为OD机试202

KJ.JK 2459

2024最新华为OD机试,题库清单(按算法分类),高效刷题,举一反三,玩转OD

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 7834

2025华为OD机试2025C卷详解,华为OD机考2025C卷备考技巧和重点算法考点分享

2025华为OD机试2025C卷详解,华为OD机考2025C卷备考技巧和重点算法考点分享

qq_45776114的博客 3619

2025B卷 华为OD机试,上岸技巧、注意事项 以及 真题详解

华为OD机试 独家上岸技巧以及注意事项详解分享,并提供2025 B卷 真题 拆解

qq_45776114的博客 2354

2025最新华为OD机试,华为OD机试备考攻略,独家整理总结上岸技巧(Python/JS/C/C++)

很多人想重试本地部署DeepSeek,对接DeepSeek api,对于大多数小伙伴而言,门槛还是过高,即使部署成功,也会因为电脑配置等原因,只能部署 7B、8B 的版本,不是满血版的 671B 的 deepseek,体验不佳。4、 编码工具删除行 ctrl+d依旧可以使用,ctrl+c,+v ,+z 等均可正常使用,其他快捷键建议尽量莫用,尤其是有保存习惯的同学,不要用ctrl+s,否则会打开页面保存键,算弹出当前页面一次。如果需要上厕所,请在考试前提前准备好,避免考试中途离开座位,出现离开监控的情况。

学Java,找哪吒 2549
上一篇: 机试_6_数据结构(二)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

窝在角落里学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值