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

网站建设语音做搜狗pc网站快速

网站建设语音,做搜狗pc网站快速,重庆市建设工程信息网官,手机端自定义做链接网站目录 一、栈的概念 二、栈的基本方法 三、栈的模拟实现 四、栈的练习 1、括号匹配 2、出栈入栈次序匹配 一、栈的概念 栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底…

目录

一、栈的概念

二、栈的基本方法

三、栈的模拟实现 

四、栈的练习

1、括号匹配  

 2、出栈入栈次序匹配


一、栈的概念

栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。其特点是数据元素先进后出(先入栈的元素后出栈)

 入栈与出栈:

入栈:栈的插入操作叫做进栈/压栈/入栈。入数据在栈顶。

出栈:栈的删除操作叫做出栈。出数据在栈顶。

还不太理解的小伙伴可以看看以下图示:

 

 

二、栈的基本方法

 栈的基本方法有:push()(入栈)、pop()(出栈)、peek()(获取栈顶元素,不删除)、empty()(判断栈是否为空)

三、栈的模拟实现 

 以下的代码我们默认数据元素是整型。

import java.util.Arrays;public class MyStack {public int[] elem;//存放数据的数组public int usedSize;//当前数据的个数public MyStack() {elem=new int[10];}//入栈public void push(int val){if(isFull()){//满了就扩容elem= Arrays.copyOf(elem,elem.length*2);}elem[usedSize]=val;usedSize++;}//判断栈是否满了private boolean isFull(){return elem.length==usedSize;}//出栈public int pop(){if(isEmpty()){return -1;}int getVal=elem[usedSize-1];usedSize--;return getVal;}//判断栈是否为空public boolean isEmpty(){return usedSize==0;}//获取栈顶元素,不删除public int peek(){if(isEmpty()){return -1;}return elem[usedSize-1];}
}

四、栈的练习

1、括号匹配  

 20. 有效的括号 - 力扣(LeetCode)

题目要求如下: 

 

 解题思路:先创建一个字符类型的栈,再遍历字符串,如果是左括号就入栈,如果是右括号,就看是否与栈顶元素匹配,不匹配返回false,遍历结束后看栈是否为空,不为空则返回false(这是为了防止类似于"(((("的情况出现)。

class Solution {public boolean isValid(String s) {Stack<Character> stack=new Stack<>();//创建一个字符类型的栈for(int i=0;i<s.length();i++){char ch=s.charAt(i);//获取i下标字符if(ch=='('||ch=='{'||ch=='['){//如果是左符号,入栈stack.push(ch);}else{if(stack.empty()){//判断栈是否为空,为空则返回falsereturn false;}char loop=stack.peek();//判断左右是否匹配,若不匹配则返回false,否则栈顶元素出栈if(loop=='('&&ch==')'||loop=='['&&ch==']'||loop=='{'&&ch=='}'){stack.pop();}else{return false;}}}//遍历结束后看栈是否为空,不为空则返回false(这是为了防止类似于"(((("的情况出现)if(!stack.empty()){return false;}return true;}
}

 2、出栈入栈次序匹配

栈的压入、弹出序列_牛客题霸_牛客网

题目要求如下: 

 

解题思路:创建一个整型栈,遍历pushV,对每个元素进行入栈操作,再创建一个循环,判断该元素是否与popV[j]相等,若相等则出栈,移动j下标,当遍历完pushV后,若栈空,则匹配,反之不匹配。

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param pushV int整型一维数组 * @param popV int整型一维数组 * @return bool布尔型*/public boolean IsPopOrder (int[] pushV, int[] popV) {// write code hereStack<Integer> stack=new Stack<>();//创建一个整型栈int j=0;for(int i=0;i<pushV.length;i++){//遍历pushVstack.push(pushV[i]);//入栈//如果栈顶元素与popV[j]相等,出栈,移动j下标while(j<popV.length&&!stack.empty()&&popV[j]==stack.peek()){stack.pop();j++;}}return stack.empty();}
}

以上便是本篇文章的全部内容,感谢各位看官支持~~~

http://www.dtcms.com/wzjs/587677.html

相关文章:

  • 淄博百度网站制作wordpress the id
  • 网站后台卸载cmsdede甘肃省住房和城乡建设厅注册中心网站
  • 网站开发的安全策略中牟网站建设
  • 网站互点都是怎么做的网站上传的工具
  • 一键搭建网站windowswordpress 图片特效插件下载
  • AAP网站开发需要多少钱长沙企业网站排名
  • 广园路建设公司网站中国能源建设集团有限公司官网
  • 世界杯消息哪个门户网站做的好无锡网站建设价格最优
  • dw课设做网站网站推广优化服务
  • wap网站制作软件网站推广营销收费
  • 网站建设企业模板下载搜索引擎优化与关键词的关系
  • 防止网站被采集a公司与企业k签订了建设k企业
  • 设计师素材网站开发家政保洁公司网站建设方案
  • 一级a做爰片手机电影网站wordpress js手工合并
  • 网站建设 案例租赁公司网站源码
  • 杭州网站设计推荐柚米郑州网站建设怎样
  • 如何做一个手机网站机械网站案例分析
  • 四川建设人员数据网站从珠海回来都变黄码了
  • 学校网站的建设方案wordpress收费下载资源插件
  • 如何使用云服务建设网站免费网站如何做推广
  • 宝安公司免费网站建设首都之窗
  • 百度一下百度一下你就知道推广网站排名优化seo教程
  • 有api对接文档怎么做网站做书封面的模板下载网站
  • 做网站卖多少钱一个自动生成logo
  • 网站 不稳定手机上怎么做微电影网站
  • 公司网站建设找哪家网页制作软件是什么
  • 网站建设服务哪家便宜网站建设推广实训总结
  • 南京服装网站建设wordpress后台产品图标
  • 网站建设文献文档wordpress登录锚点弹
  • 硬件开发一站式平台wordpress.conf