JAVA初阶初阶结构练习(栈)

1  基础练习

答案:C

 答案:B

 2.打印栈

// 递归方式
void printList(Node head){
if(null != head){
printList(head.next);
System.out.print(head.val + " ");
}
}
// 循环方式
void printList(Node head){
if(null == head){
return;
}
Stack<Node> s = new Stack<>();
// 将链表中的结点保存在栈中
Node cur = head;
while(null != cur){
s.push(cur);
cur = cur.next;
}

3.表达式转换

中缀转后缀写代码有点难emmm后续算法我会补上(关注我,算法专栏会详细讲解)

中缀转后缀数字图 

 

神奇的栈

用栈来表达后缀表达式

遇到符号弹出和右边操作数进行运算然后放入栈以此循环,最后剩下的数字就是运算结果

学过安卓的同学相信会很熟悉(后续会更新安卓感兴趣可以关注一下)

总结:只要是数字就放到栈里面,遇到运算符,就弹出栈顶元素,这两个元素进行运算。

4.逆波兰式(打了20minemmmm累)

代码实现(敲太嗨了搞成c++的了主题代码是对的搞到java中)

class Solution {
public:int evalRPN(vector<string>& tokens) {stack<Integer> stack = new stack<>() ;for(i = 1; i <= tokens.length;i++){//每次循环可以拿到字符串所以要判断运算符是否合法,定义一个私有方法isOperations方法string str = takens[i] ;//将String类型变成int类型if(isOperations(str)){//不是运算符就是数字就放入栈int val = Integer.valueof(str);stack.push(val)}else{//式运算符,如果是运算符就弹出两个元素int num2 = stack.pop();//先弹出一个然后计算int num2 = stack.pop();switch(str){case"+":stack.push(num1 + num2);break;case"-":stack.push(num1-num2);break;case"*":stack.push(num1*num2);break;stack.push(num1/num2);case"/":break;}}return stack.pop;//最后的元素就是计算结果}//只要式加减乘除就式trueprivate boolean isOperations (string){if(str.equals("+")||str.equals("-")||str.equals("*")||str.equals("/")){return true;}else{return false;}}}
};

5.括号匹配 

不能以括号次数来判断

一般和顺序相关的排序就可以考虑使用栈。

栈的弹出可以更好的判断括号

定义一个下标i来标记,红色的框是三种不匹配的情况其他情况都是匹配的

代码实现 

6.最小栈

 思路

代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/536653.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Nginx进行负载均衡

什么是负载均衡 Nginx是一个高性能的开源反向代理服务器&#xff0c;也可以用作负载均衡器。通过Nginx的负载均衡功能&#xff0c;可以将流量分发到多台后端服务器上&#xff0c;实现负载均衡&#xff0c;提高系统的性能、可用性和稳定性。 如下图所示&#xff1a; Nginx负…

【PHP + 代码审计】文件包含

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

StarRocks实战——云览科技存算分离实践

目录 背景 一、平台现状&痛点 1.1 使用组件多&#xff0c;维护成本高 1.2 链路冗长&#xff0c;数据时效性难以保证 1.3 服务稳定性不足 二、StarRocks 存算分离调研 2.1 性能对比 2.2 易用性 2.3 存储成本 三、StarRocks 存算分离实践 3.1 查询优化 3.1.1 物化…

【QT+QGIS跨平台编译】之七十三:【QGIS_Analysis跨平台编译】—【错误处理:字符串错误】

文章目录 一、字符串错误二、处理方法三、涉及到的文件一、字符串错误 常量中有换行符错误:(也有const char * 到 LPCWSTR 转换的错误) 二、处理方法 需要把对应的文档用记事本打开,另存为 “带有BOM的UTF-8” 三、涉及到的文件 涉及到的文件有: src\analysis\processin…

数据结构:哈希表

1.散列表的概念: 根据要存储的数据记录的关键字值计算出应该存储的位置 基本思想:记录的存储位置与关键字之间存在对应关系 Loc(i)H(keyi)-----等号右边就称之为hash函数.等号左边就是对应的存储位置; 2.哈希表的优缺点 这个就是散列表的特点:查找效率高,空间利用率低;&am…

MATLAB中fseek函数用法

目录 语法 说明 示例 移动到文件中的新位置 fseek函数的功能是移至文件中的指定位置。 语法 fseek(fileID, offset, origin) status fseek(___) 说明 fseek(fileID, offset, origin) 在指定文件中设置文件位置指示符相对于 origin 的 offset 字节数。 当操作成功时&…

labview中6种机械动作的区别

1.单击时转换&#xff1a;单击时转换&#xff0c;需要手动转换或者赋值回复原来状态&#xff1b; 2.释放时转换&#xff1a;释放时时转换&#xff0c;需要手动转换或者赋值回复原来状态&#xff1b; 3.单击时转换保持到鼠标释放&#xff1a;触发两次&#xff0c;自动恢复原来状…

学习Vue(1)环境搭建与运行一个vue项目

下载node.js 下载地址&#xff1a;下载 | Node.js 中文网 安装 双击下载好的安装文件&#xff0c;选择安装路径即可。 安装完成&#xff0c;输入命令&#xff1a;nodel -v&#xff0c;查看版本&#xff0c;正常显示版本即安装成功。 自定义全局安装路径和缓存路径&#xff0…

OpenCV 配置 VS 2022并识别人脸框出

文章目录 前言一、什么是OpenCV&#xff1f;二、OpenCV的安装和配置1. OpenCV 下载2. 安装3. 配置环境变量4.vs2022环境配置 三、OpenCV识别图片人脸四、总结 前言 在计算机视觉领域&#xff0c;人脸识别是一项具有挑战性且备受关注的任务。借助于开源的计算机视觉库OpenCV&am…

Apache SeaTunnel MongoDB CDC 使用指南

随着数据驱动决策的重要性日益凸显&#xff0c;实时数据处理成为企业竞争力的关键。SeaTunnel MongoDB CDC(Change Data Capture) 源连接器的推出&#xff0c;为开发者提供了一个高效、灵活的工具&#xff0c;以实现对 MongoDB 数据库变更的实时捕获和处理。 本文将深入探讨该连…

2024 前端javaScript+ES6

JavaScript 基础 1、基本数据类型&#xff1a; 1.1 基本数据类型&#xff1a; Number&#xff08;数值&#xff09;&#xff1a;表示数字&#xff0c;包括整数和浮点数。例如&#xff1a;5、3.14。 String&#xff08;字符串&#xff09;&#xff1a;表示文本数据&#xff…

Apache zookeeper kafka 开启SASL安全认证

背景&#xff1a;我之前安装的kafka没有开启安全鉴权&#xff0c;在没有任何凭证的情况下都可以访问kafka。搜了一圈资料&#xff0c;发现有关于sasl、acl相关的&#xff0c;准备试试。 简介 Kafka是一个高吞吐量、分布式的发布-订阅消息系统。Kafka核心模块使用Scala语言开发…