日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

栈的基本应用

發(fā)布時間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 栈的基本应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?前言?
之前已經(jīng)學(xué)習(xí)過了棧的相關(guān)知識點(diǎn),本次主要總結(jié)一下常見的棧的應(yīng)用實(shí)例

📘 博客主頁:to Keep博客主頁
🙆歡迎關(guān)注,👍點(diǎn)贊,📝留言評論
?首發(fā)時間:2022年1月16日
📨 博主碼云地址:博主碼云地址
📕參考書籍:java核心技術(shù) 卷1
📢編程練習(xí):牛客網(wǎng)+力扣網(wǎng)
由于博主目前也是處于一個學(xué)習(xí)的狀態(tài),如有講的不對的地方,請一定聯(lián)系我予以改正!!!

棧的應(yīng)用:

  • 1 出棧與入棧順序問題:
    • 1.1 選擇題
    • 1.2 編程題
  • 2 中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式
    • 2.1 填空題:
    • 2.2 編程題
  • 3 括號匹配問題:
  • 4 最小棧的問題

1 出棧與入棧順序問題:

1.1 選擇題

一個棧的入棧順序是A,B,C,D,E,則出棧順序不可能的是?( )
A EDCBA
B DECBA
C DCEAB
D ABCDE

題目中隱含的條件就是出棧的同時也是可以進(jìn)棧的

分析:
對于A選項(xiàng)而言就是不出棧,等A,B,C,D,E依次進(jìn)棧之后依次出棧,所以是符合棧的后進(jìn)先出特性的,對于B選項(xiàng)而言,等A,B,C,D進(jìn)棧之后,在對D進(jìn)行出棧,然后在將E進(jìn)棧,然后再把E出棧,最后將C,B,A依次出棧,因此B選項(xiàng)也是正確的,對于C選項(xiàng)與B選項(xiàng)對于,很明顯A是不能先于B出棧的,所以C選項(xiàng)是不符合的,D選項(xiàng)就是在進(jìn)棧的同時進(jìn)行出棧的操作,所以D選項(xiàng)也是符合要求的。
正確答案: C

1.2 編程題

代碼題:OJ鏈接

public class Solution {public boolean IsPopOrder(int [] pushA,int [] popA) {Stack<Integer> stack = new Stack<>();//創(chuàng)建一個棧int j = 0;//遍歷第二個數(shù)組for(int i = 0;i<pushA.length;i++){//遍歷第一個數(shù)組stack.push(pushA[i]);//將第一個數(shù)組依次入棧while(j<popA.length&&!stack.empty()&&stack.peek()==popA[j]){//當(dāng)J下標(biāo)元素與棧頂元素比較,是否相等,此時j必須是要有意義的,并且此時棧要不為空,才進(jìn)行出棧操作stack.pop();j++;}}return stack.empty();//如果符合棧的特性,那么最后一定會是一個空棧。否則就是不符合棧的特性的} }

2 中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式

2.1 填空題:

將(5+4)*3-2(中綴表達(dá)式也被稱做為逆波蘭式)轉(zhuǎn)化為后綴表達(dá)式的結(jié)果為:
(1)按先加減后乘除的原則給表達(dá)式加括號

(2)在將符合移到對應(yīng)的括號之后,就可以得到對應(yīng)的后綴表達(dá)式
54+3*2-

2.2 編程題

逆波蘭表達(dá)式求值:OJ鏈接

class Solution {public int evalRPN(String[] tokens) {Stack<Integer> stack = new Stack<>();for(int i = 0;i<tokens.length;i++){String ch = tokens[i];if(!INT(ch)){//為整數(shù)值進(jìn)棧stack.push(Integer.parseInt(ch));//將字符串轉(zhuǎn)化為整數(shù)放入棧中}else{//如果為運(yùn)算符int num1 = stack.pop();int num2 = stack.pop();int num=0;switch(ch){case "+": num=num2+num1;break;case"-":num=num2-num1;break;case"*":num=num2*num1;break;case"/":num=num2/num1;break;}stack.push(num);}} return kohaostack.peek();}public boolean INT(String val){//判斷是否為符號if(val.equals("+")||val.equals("-")||val.equals("*")||val.equals("/")){return true;}return false;} }

3 括號匹配問題:

對于棧中,括號匹配問題是一個挺重要的一個筆試的考點(diǎn),具體題目分析如下:
括號匹配問題詳解鏈接

4 最小棧的問題

最小棧:OJ鏈接

class MinStack {Stack<Integer> stack;Stack<Integer> minStack;public MinStack() {stack=new Stack<>();minStack=new Stack<>();}public void push(int val) {if(minStack.empty()){stack.push(val);minStack.push(val);return;}if(minStack.peek()>=val){stack.push(val);minStack.push(val);}else{stack.push(val);}}public void pop() {if(stack.peek()>minStack.peek()){stack.pop();}else{stack.pop();minStack.pop();}}public int top() {return stack.peek();}public int getMin() {return minStack.peek();} }

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的栈的基本应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。