国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java------數(shù)據(jù)結(jié)構(gòu)之棧與隊列(簡單講解)

這篇具有很好參考價值的文章主要介紹了Java------數(shù)據(jù)結(jié)構(gòu)之棧與隊列(簡單講解)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本篇碎碎念:時隔n個月,繼續(xù)寫博客,假期落下的進(jìn)度,在開學(xué)后努力追趕,假期不努力,開學(xué)徒傷悲啊,此時此刻真想對自己說一句,活該啊~~~~

欠下的鏈表練習(xí)題講解會在下次更新~~~~

今日份勵志文案:?萬物皆有裂痕,那是光照進(jìn)來的地方

Java------數(shù)據(jù)結(jié)構(gòu)之棧與隊列(簡單講解),java,開發(fā)語言

一.棧

棧:一種特殊的線性表,其只允許在固定的一端進(jìn)行插入和刪除元素操作。

棧中的元素遵守后進(jìn)先出LIFO原則

Java------數(shù)據(jù)結(jié)構(gòu)之棧與隊列(簡單講解),java,開發(fā)語言

棧的相關(guān)使用方法

Java------數(shù)據(jù)結(jié)構(gòu)之棧與隊列(簡單講解),java,開發(fā)語言

        Stack<Integer> stack=new Stack<>();
        //入棧
        stack.push(1);
        stack.push(2);
        stack.push(3);

        System.out.println(stack);
        //彈出并獲取棧頂元素
        int a=stack.pop();
        System.out.println(a);

        //獲取棧頂元素
        int b=stack.peek();
        System.out.println(b);
        System.out.println(stack);

        //判斷棧是否為空
        boolean c=stack.isEmpty();
        System.out.println(c);

        //判斷棧的大小
        int d=stack.size();
        System.out.println(d);

Java------數(shù)據(jù)結(jié)構(gòu)之棧與隊列(簡單講解),java,開發(fā)語言

練習(xí)題:
1. 若進(jìn)棧序列為 1,2,3,4 ,進(jìn)棧過程中可以出棧,則下列不可能的一個出棧序列是()
A: 1,4,3,2? ? ? ? ? ? ? ? ?B: 2,3,4,1? ? ? ? ? ? ? ? ?C?: 3,1,4,2? ? ? ? ? ? ?D: 3,4,2,1

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

這兩道題的答案與講解會在末尾公布


二.隊列

隊列:只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表

隊列具有先進(jìn)先出FIFO原則

入隊列:進(jìn)行插入操作的一端稱為隊尾(Tail/Rear) \

出隊列:進(jìn)行刪除操作的一端稱為隊頭

Java------數(shù)據(jù)結(jié)構(gòu)之棧與隊列(簡單講解),java,開發(fā)語言

public static void main(String[] args){
        Queue<Integer> q = new LinkedList<>();
        q.offer(1);
        q.offer(2);
        q.offer(3);
        q.offer(4);
        q.offer(5); // 從隊尾入隊列

        System.out.println("隊列中的元素個數(shù)為:");
        System.out.println(q.size());

        System.out.println("隊列中隊頭元素為:");
        System.out.println(q.peek()); // 獲取隊頭元素
        // 從隊頭出隊列,并將刪除的元素返回
        q.poll();
        System.out.println("經(jīng)過一個p.poll()剩下的元素為:");
        System.out.println(q);
        
        if(q.isEmpty()){
            System.out.println("隊列空");
        }else{
            System.out.println(q.size());
        }
    }

Java------數(shù)據(jù)結(jié)構(gòu)之棧與隊列(簡單講解),java,開發(fā)語言


?練習(xí)題:
1. 若進(jìn)棧序列為 1,2,3,4 ,進(jìn)棧過程中可以出棧,則下列不可能的一個出棧序列是(C)
A: 1,4,3,2? ? ? ? ? ? ? ? ?B: 2,3,4,1? ? ? ? ? ? ? ? ?C?: 3,1,4,2? ? ? ? ? ? ?D: 3,4,2,1

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


填空題

Java------數(shù)據(jù)結(jié)構(gòu)之棧與隊列(簡單講解),java,開發(fā)語言

編程題

class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack=new Stack<>();
       

        for(int i=0;i<s.length();i++){
            char count=s.charAt(i);
            if(count=='('||count=='{'||count=='['){
                stack.push(count);
            }else{
                if(stack.empty()){
                    return false;
                }

                char count1=stack.peek();
                if(count==')'&&count1=='('||
                count=='}'&&count1=='{'
                ||count==']'&&count1=='['){
                    stack.pop();
                }else{
                    return false;
                }
                
            }
        }
      return stack.empty();
    }
}

題目要求?

1.左括號必須用相同類型的右括號閉合。

2.左括號必須以正確的順序閉合。

3每個右括號都有一個對應(yīng)的相同類型的左括號。


問題1:我們?nèi)绾伪闅v字符串?? ? ? ? ? ? ? ??

問題2:如何判斷是相同類型的括號?


解1:可以用for循環(huán)或者while循環(huán)(我用的是for循環(huán))?

解2:創(chuàng)建一個棧(先進(jìn)后出原則),如果為左括號就進(jìn)棧

? ? ? ? 如果為右括號就與剛進(jìn)棧的左括號“配對”

“配對”方式,設(shè)置兩個char變量,count與count1

if(count==')'&&count1=='('||count=='}'&&count1=='{'||count==']'&&count1=='[')

“配對”成功,左括號出棧,繼續(xù)走循環(huán),“配對失敗”返回false

如果棧中沒有左括號,同時來了個右括號要配對,要返回false


?最后還有兩道練習(xí)題,大家可以嘗試一下

1. 用隊列實現(xiàn)棧。 225. 用隊列實現(xiàn)棧 - 力扣(LeetCode)
2. 用棧實現(xiàn)隊列。 232. 用棧實現(xiàn)隊列 - 力扣(LeetCode)

Java------數(shù)據(jù)結(jié)構(gòu)之棧與隊列(簡單講解),java,開發(fā)語言

如果有解釋的不對或者不清晰,如果可以從評論區(qū)指出,我一定會加以修改,萬分感謝

希望對你們有所幫助文章來源地址http://www.zghlxwxcb.cn/news/detail-851550.html

到了這里,關(guān)于Java------數(shù)據(jù)結(jié)構(gòu)之棧與隊列(簡單講解)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)】線性表之棧、隊列

    【數(shù)據(jù)結(jié)構(gòu)】線性表之棧、隊列

    前面兩篇文章講述了關(guān)于線性表中的順序表與鏈表,這篇文章繼續(xù)講述線性表中的 棧和隊列。 這里講述的兩種線性表與前面的線性表不同,只允許在一端入數(shù)據(jù),一段出數(shù)據(jù),詳細(xì)內(nèi)容請看下面的文章。 順序表與鏈表兩篇文章的鏈接: 線性表之順序表 線性表之鏈表 注意:

    2024年02月06日
    瀏覽(94)
  • 數(shù)據(jù)結(jié)構(gòu)之棧、隊列——算法與數(shù)據(jù)結(jié)構(gòu)入門筆記(四)

    數(shù)據(jù)結(jié)構(gòu)之棧、隊列——算法與數(shù)據(jù)結(jié)構(gòu)入門筆記(四)

    本文是算法與數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)筆記第四篇,將持續(xù)更新,歡迎小伙伴們閱讀學(xué)習(xí) 。有不懂的或錯誤的地方,歡迎交流 棧是一種線性數(shù)據(jù)結(jié)構(gòu),其 只允許在固定的一端進(jìn)行插入和刪除 元素操作。進(jìn)行數(shù)據(jù)插入和刪除操作的一端稱為棧頂 (Top), 另一端稱為棧底 (Bottom)。棧中的

    2024年02月08日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)】棧與隊列

    【數(shù)據(jù)結(jié)構(gòu)】棧與隊列

    棧:一種特殊的線性表,其只允許在固定的一端進(jìn)行插入和刪除元素操作。 進(jìn)行數(shù)據(jù)插入和刪除操作的一端稱為棧頂,另一端稱為棧底 。棧中的數(shù)據(jù)元素遵守后進(jìn)先出 LIFO (Last In First Out) 的原則。 壓棧:棧的插入操作叫做進(jìn)棧/壓棧/入棧, 入數(shù)據(jù)在棧頂 。 出棧:棧的刪除操

    2024年02月13日
    瀏覽(21)
  • 數(shù)據(jù)結(jié)構(gòu)——棧與隊列

    數(shù)據(jù)結(jié)構(gòu)——棧與隊列

    目錄 一、棧 1.棧的定義 ?2.棧的分類與基本操作 1. 順序棧 2.鏈棧 3.棧與遞歸的實現(xiàn) 1.遞歸的簡單描述 2.遞歸過程及與棧的關(guān)聯(lián) 3.遞歸過程示意圖 二.隊列 1.隊列的定義 ?2.隊列的分類與基本操作 1.順序隊列 2.鏈隊列 3.循環(huán)隊列 1.假溢出 ?2.循環(huán)隊列 3.循環(huán)隊列相關(guān)操作實現(xiàn):

    2024年02月04日
    瀏覽(29)
  • 數(shù)據(jù)結(jié)構(gòu)之棧和隊列---c++

    數(shù)據(jù)結(jié)構(gòu)之棧和隊列---c++

    棧 棧是一個“先進(jìn)后出”結(jié)構(gòu) 隊列 入隊演示 隊列是一種“先進(jìn)先出”的結(jié)構(gòu) 出隊演示 接下來我們開始本次的內(nèi)容 分析 1.我們可以 老老實實的寫一個棧 然后將所有的接口函數(shù)實現(xiàn)出來,最后再進(jìn)行實現(xiàn)隊列,但是顯然是 效率低下 的方法 2.我們使用 數(shù)組模擬棧 ,然后再進(jìn)

    2024年02月14日
    瀏覽(23)
  • 數(shù)據(jù)結(jié)構(gòu)奇妙旅程之棧和隊列

    數(shù)據(jù)結(jié)構(gòu)奇妙旅程之棧和隊列

    ??????? write in front???????? ?????????大家好,我是xiaoxie.希望你看完之后,有不足之處請多多諒解,讓我們一起共同進(jìn)步????? . ?? ?xiaoxie?????????—CSDN博客 本文由xiaoxie??????????原創(chuàng) CSDN?如需轉(zhuǎn)載還請通知???? 個人主頁:xiaoxie??

    2024年02月04日
    瀏覽(21)
  • 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)分享之棧和隊列詳解

    數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)分享之棧和隊列詳解

    ??博主CSDN主頁:杭電碼農(nóng)-NEO?? ? ?專欄分類:數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)分享? ? ??代碼倉庫:NEO的學(xué)習(xí)日記?? ? ??關(guān)注我??帶你了解更多數(shù)據(jù)結(jié)構(gòu)的知識 ? ???? 這一節(jié)要分享的是一個全新的結(jié)構(gòu)–棧和隊列,棧和隊列總是會一起出現(xiàn),因為它們的存儲方式剛好相反,一個先進(jìn)先出一

    2024年02月03日
    瀏覽(39)
  • 數(shù)據(jù)結(jié)構(gòu)和算法(4):棧與隊列

    棧(stack)是存放數(shù)據(jù)對象的一種特殊容器,其中的數(shù)據(jù)元素按線性的邏輯次序排列,故也可定義首、末元素。 盡管棧結(jié)構(gòu)也支持對象的插入和刪除操作,但其操作的范圍僅限于棧的某一特定端。 也就是說,若約定新的元素只能從某一端插入其中,則反過來也只能從這一端刪

    2024年02月09日
    瀏覽(21)
  • 【數(shù)據(jù)結(jié)構(gòu)】 棧與隊列的相互實現(xiàn)

    【數(shù)據(jù)結(jié)構(gòu)】 棧與隊列的相互實現(xiàn)

    隊列與棧的操作算法是筆試面試中較為常見的題目。 本文將著重介紹平時面試中常見的關(guān)于隊列與棧的應(yīng)用題目,馬上要進(jìn)行秋招了。希望對你們有幫助 _?? 請你僅使用兩個隊列實現(xiàn)一個后入先出(LIFO)的棧,并支持普通棧的全部四種操作(push、top、pop 和 empty)。 實現(xiàn)

    2024年02月10日
    瀏覽(17)
  • C語言數(shù)據(jù)結(jié)構(gòu)——線性表之棧和隊列

    C語言數(shù)據(jù)結(jié)構(gòu)——線性表之棧和隊列

    為什么會定義棧和隊列這兩種數(shù)據(jù)結(jié)構(gòu)呢? 原因在于: 之所以會定義棧和隊列這樣的數(shù)據(jù)結(jié)構(gòu) 是因為他們有兩大特性 : 第一: 他們可以保存程序運行路徑中各個點的信息,以便用于回溯操作或其他需要訪問已經(jīng)訪問過的節(jié)點信息的操作。 比如: 棧用于解決迷宮問題,就

    2023年04月11日
    瀏覽(95)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包