当前位置: 首页 > news >正文

百度网站建设推广wechat网页版登陆

百度网站建设推广,wechat网页版登陆,编程培训机构加盟哪家好,广东建设继续教育网站首页CSDN的各位uu们你们好,今天千泽带来了栈的深入学习,我们会简单的用代码实现一下栈, 接下来让我们一起进入栈的神奇小世界吧!0.速览文章一、栈的定义1. 栈的概念2. 栈的图解二、栈的模拟实现三.栈的经典使用场景-逆波兰表达式总结一、栈的定义 1. 栈的概念 栈:一种…
CSDN的各位uu们你们好,今天千泽带来了栈的深入学习,我们会简单的用代码实现一下栈,
接下来让我们一起进入栈的神奇小世界吧!

0.速览文章

  • 一、栈的定义
    • 1. 栈的概念
    • 2. 栈的图解
  • 二、栈的模拟实现
  • 三.栈的经典使用场景-逆波兰表达式
  • 总结

一、栈的定义

1. 栈的概念

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈
顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。

2. 栈的图解

在这里插入图片描述
压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。
出栈:栈的删除操作叫做出栈。出数据在栈顶。
在这里插入图片描述
可以看出,入栈和出栈会改变栈顶.

二、栈的模拟实现

Java集合中的Stack类在底层是一个顺序表 , 那么我们可以简单的用一个数组来模拟栈

import java.util.Arrays;public class MyStack {public int [] elem;public int usedSize;public MyStack() {this.elem = new int [5];}public void push(int val){if(isFull()){this.elem =  Arrays.copyOf(this.elem,2*this.elem.length);}this.elem[this.usedSize] = val;this.usedSize++;}public boolean isFull(){return this.usedSize == elem.length;}public int pop(){if(isEmpty()){throw  new RuntimeException("栈为空!");}int OldValue = this.elem[usedSize - 1];this.usedSize--;return OldValue;}public int peek(){if(isEmpty()){throw  new RuntimeException("栈为空!");}return this.elem[usedSize - 1];}public boolean isEmpty(){return this.usedSize == 0;}
}

友友们可以动手实践一下,数据结构一定要多写多画图多总结!


三.栈的经典使用场景-逆波兰表达式

现在,我们了解了栈的相关代码写法, 那么我们一起来看一下栈在题目中的应用
150. 逆波兰表达式求值
https://leetcode.cn/problems/evaluate-reverse-polish-notation/
在这里插入图片描述
解法:

在这里插入代码片import java.util.Stack;public class 逆波兰 {int i = 0 ;public int evalRPN(String[] tokens) {Stack<Integer> stack = new Stack<>();for(int i = 0; i < tokens.length; i++){String val = tokens[i];if(isOperation(val) == false){stack.push(Integer.parseInt(val));}else {int num1 = 0;int num2 = 0;switch (val){case "+":num2 = stack.pop();num1 = stack.pop();stack.push(num1 + num2);break;case "-":num2 = stack.pop();num1 = stack.pop();stack.push(num1 - num2);break;case "*":num2 = stack.pop();num1 = stack.pop();stack.push(num1 * num2);break;case "/":num2 = stack.pop();num1 = stack.pop();stack.push(num1 / num2);break;}}}return stack.pop();}public  boolean isOperation(String str){if(str.equals("+") || str.equals("-") || str.equals("*") || str.equals("/")){return true;}return false;}
}

总结

今天栈的相关内容就到这里,祝你学习进步,感谢你的支持!

http://www.yayakq.cn/news/752808/

相关文章:

  • 杭州高端响应式网站怎样在手机做自己的网站
  • 做分析图很好用的网站发卡网站建设7az
  • 高端购物网站建设加盟项目2023推荐
  • 外管局网站上做预收登记物流公司电话
  • 建筑做网站wordpress视频弹窗
  • 湖南环达公路桥梁建设总公司网站wordpress 运行
  • 湘潭建设网站制作wordpress什么删留言
  • 宁波哪家做网站好学做网站的软件
  • wordpress 采集教程谷歌自建站和优化
  • 网站实名认证 备案由wordpress强力驱动
  • 莱芜网站建设资情况介绍石家庄移动端网站建设
  • 网站建设的论文参考文献wordpress文章行间距
  • 泉州学校网站开发重庆万州网页设计公司
  • 建设部门三类人员官方网站百度统计手机app
  • c 网站开发如何每天10点执行任务做网站需要什么功能
  • 什么是网站流量企业网站seo优化交流
  • 汕头网站设计网站建设信息服务费计入什么科目
  • 如何给网站做404页面哪个网站做二手叉车回收好
  • 网站做推广页需要什么软件重庆妇科医院排行榜
  • 企业网站建设劣势跨境电商快递怎么发到国外
  • 泉州做 php 网站商城网站怎么优化
  • 做一个网站多少钱微信朋友圈广告怎么推广
  • php的wordpresswordpress和dede seo
  • 舒兰市城乡建设局网站重庆网络教育学院官网
  • 网站建设 天台南京网络推广公司排行榜
  • 织梦更换网站模板吉安市网站建设
  • 宠物网站推广怎么做网站留言板有什么用
  • 网站建设与网页设计案例教程 重庆大学出版社住房和城乡建设部网站唐山
  • 软件商店vivo官方下载seo自助建站平台
  • 学习制作网页的网站灵璧网站建设