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

网站建设公司中心网站免费软件

网站建设公司中心,网站免费软件,网站开发和前端开发,自动的logo品牌设计目录 一、栈的概念 二、栈的基本方法 三、栈的模拟实现 四、栈的练习 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/523411.html

相关文章:

  • 广元如何做百度的网站网站模板哪家好
  • 网站维护提醒php文件关键词挖掘查询工具爱站网
  • 做视频点播网站要多少带宽恢复原来的百度
  • 长宁区网站建设网怎么免费创建自己的网站
  • 太原做网站公司哪家好国内搜索引擎排名第一的是
  • b2c典型网站代表百度竞价广告怎么收费
  • 电脑网站怎样给网页做适配做外贸有哪些网站平台
  • 有专门做网站的吗班级优化大师怎么用
  • .ent做的网站有哪些seo网站排名助手
  • asp做网站步骤91
  • 英文做网站百度关键字搜索排名
  • 武汉抖音seo推广余姚关键词优化公司
  • 手机企业网站源码谷歌推广技巧
  • 免费建靓号网站营销方式有哪些
  • 游戏特效培训机构排名青岛seo优化
  • 怎么搞自己的网站郑州seo线上推广技术
  • 施工企业安全控制管理摘要长沙seo服务哪个公司好
  • 网站效果案例疫情最新消息今天封城了
  • 免费生成网站网址品牌搜索引擎服务优化
  • 用qt做网站可以吗百度竞价排名是什么
  • 东莞专业建站公司费用什么都不懂能去干运营吗
  • seo网站推广电话免费申请网站
  • java做web网站的流程百度一下官网手机版
  • 保定市住房保障和城乡建设局网站seo网站免费优化软件
  • 网站做很多关键词网站排名软件利搜
  • 网站做小学一年二班作业怎么做什么是seo营销
  • 个人网站做排名自己如何优化网站排名
  • 简单漂亮的博客php网站源码网站快速刷排名工具
  • 德阳网站设计北京疫情最新情况
  • 网站排名费用蚁百杭州网站seo优化