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

Java 【數(shù)據(jù)結(jié)構(gòu)】 棧(Stack)和隊(duì)列(Queue)【神裝】

這篇具有很好參考價(jià)值的文章主要介紹了Java 【數(shù)據(jù)結(jié)構(gòu)】 棧(Stack)和隊(duì)列(Queue)【神裝】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Java 【數(shù)據(jù)結(jié)構(gòu)】 棧(Stack)和隊(duì)列(Queue)【神裝】,【Java】登神長(zhǎng)階 史詩(shī)般的Java成神之路,數(shù)據(jù)結(jié)構(gòu)

Java 【數(shù)據(jù)結(jié)構(gòu)】 棧(Stack)和隊(duì)列(Queue)【神裝】,【Java】登神長(zhǎng)階 史詩(shī)般的Java成神之路,數(shù)據(jù)結(jié)構(gòu)

?登神長(zhǎng)階

?第三神裝 Stack

? ?第四神裝?Queue??


目錄

??一.棧 Stack

??1.概念

???2.基本操作?

???3.相關(guān)OJ題??

???4.棧、虛擬機(jī)棧和棧幀的區(qū)別

??二.隊(duì)列 Queue

???1.概念

??2.基本操作

??三.總結(jié)與反思


??一.棧 Stack

??1.概念

????????在 Java 中,棧(Stack)是一種后進(jìn)先出(LIFO)的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)元素。在棧中,只有棧頂?shù)脑厥强梢?jiàn)的和可訪問(wèn)的,其他元素都被隱藏起來(lái),直到棧頂?shù)脑乇灰瞥驈棾?。Java 中的 java.util.Stack 類(lèi)實(shí)現(xiàn)了這種棧的數(shù)據(jù)結(jié)構(gòu),并且是線程安全的,繼承自 Vector 類(lèi)。

Java 【數(shù)據(jù)結(jié)構(gòu)】 棧(Stack)和隊(duì)列(Queue)【神裝】,【Java】登神長(zhǎng)階 史詩(shī)般的Java成神之路,數(shù)據(jù)結(jié)構(gòu)

壓棧:棧的插入操作叫做進(jìn)棧 / 壓棧 / 入棧, 入數(shù)據(jù)在棧頂
出棧:棧的刪除操作叫做出棧。 出數(shù)據(jù)在棧頂 。

Java 【數(shù)據(jù)結(jié)構(gòu)】 棧(Stack)和隊(duì)列(Queue)【神裝】,【Java】登神長(zhǎng)階 史詩(shī)般的Java成神之路,數(shù)據(jù)結(jié)構(gòu)

???2.基本操作?

Java 【數(shù)據(jù)結(jié)構(gòu)】 棧(Stack)和隊(duì)列(Queue)【神裝】,【Java】登神長(zhǎng)階 史詩(shī)般的Java成神之路,數(shù)據(jù)結(jié)構(gòu)

方法
功能
Stack() 構(gòu)造一個(gè)空的棧
E push(E e) e入棧,并返回e
E pop() 將棧頂元素出棧并返回
E peek() 獲取棧頂元素
int size()
獲取棧中有效元素個(gè)數(shù)
boolean empty() 檢測(cè)棧是否為空

示例

以下是一個(gè)使用 Stack 類(lèi)的簡(jiǎn)單示例:

import java.util.Stack;

public class StackExample {
    public static void main(String[] args) {
        Stack<String> stack = new Stack<>();
        
        // 壓棧操作
        stack.push("Java");
        stack.push("Python");
        stack.push("C++");
        
        // 彈棧操作
        String topLanguage = stack.pop();
        System.out.println("彈出棧頂元素:" + topLanguage);
        
        // 查看棧頂元素
        String currentTop = stack.peek();
        System.out.println("當(dāng)前棧頂元素:" + currentTop);
        
        // 判空操作
        if (stack.isEmpty()) {
            System.out.println("棧為空");
        } else {
            System.out.println("棧不為空");
        }
    }
}

這個(gè)示例展示了棧的基本操作,包括壓棧、彈棧、查看棧頂元素和判空。棧在 Java 中常用于處理需要后進(jìn)先出順序的場(chǎng)景,例如表達(dá)式求值、逆序輸出等。

???3.相關(guān)OJ題??

括號(hào)匹配

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-859619.html

逆波蘭表達(dá)式

?

出棧入棧次序匹配

?

最小棧

???4.棧、虛擬機(jī)棧和棧幀的區(qū)別

  1. 棧(Stack)

    • 在計(jì)算機(jī)科學(xué)中,棧是一種數(shù)據(jù)結(jié)構(gòu),遵循后進(jìn)先出(LIFO)的原則,用于存儲(chǔ)和管理函數(shù)調(diào)用、局部變量和臨時(shí)數(shù)據(jù)。
    • 棧通常由操作系統(tǒng)提供支持,用于管理程序的執(zhí)行環(huán)境和內(nèi)存分配。
  2. 虛擬機(jī)棧(Java Virtual Machine Stack)

    • 虛擬機(jī)棧是 Java 虛擬機(jī)在執(zhí)行 Java 程序時(shí)使用的內(nèi)存區(qū)域之一,與線程生命周期相同。
    • 每個(gè)線程在創(chuàng)建時(shí)都會(huì)分配一個(gè)對(duì)應(yīng)的虛擬機(jī)棧,用于存儲(chǔ)方法的調(diào)用棧幀(Stack Frame)、局部變量表、操作數(shù)棧等信息。
    • 虛擬機(jī)棧中的棧幀存儲(chǔ)了方法的運(yùn)行時(shí)數(shù)據(jù)結(jié)構(gòu),每個(gè)方法的調(diào)用都會(huì)創(chuàng)建一個(gè)對(duì)應(yīng)的棧幀。
  3. 棧幀(Stack Frame)

    • 棧幀是虛擬機(jī)棧中的一個(gè)重要概念,用于表示方法在虛擬機(jī)中的運(yùn)行狀態(tài)和執(zhí)行信息。
    • 每個(gè)方法的調(diào)用都會(huì)對(duì)應(yīng)一個(gè)棧幀,包含局部變量表、操作數(shù)棧、動(dòng)態(tài)鏈接、返回地址等部分。
    • 當(dāng)方法被調(diào)用時(shí),會(huì)創(chuàng)建一個(gè)新的棧幀壓入虛擬機(jī)棧,并在方法執(zhí)行完畢后彈出棧幀,恢復(fù)上一個(gè)調(diào)用棧幀的執(zhí)行。

區(qū)別總結(jié):

  • ?是一種數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)和管理數(shù)據(jù),具有后進(jìn)先出的特性。
  • 虛擬機(jī)棧?是 Java 虛擬機(jī)提供的內(nèi)存區(qū)域,用于存儲(chǔ)線程的方法調(diào)用棧幀和相關(guān)數(shù)據(jù)。
  • 棧幀?是虛擬機(jī)棧中的一個(gè)部分,用于表示方法的運(yùn)行狀態(tài)和執(zhí)行信息,包含局部變量表、操作數(shù)棧等。

??二.隊(duì)列 Queue

???1.概念

????????在 Java 中,隊(duì)列(Queue)是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)元素。隊(duì)列在 java.util 包中有多種實(shí)現(xiàn),如 LinkedList、ArrayDequePriorityQueue。只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有先進(jìn)先出FIFO(First In First Out) 入隊(duì)列:進(jìn)行插入操作的一端稱(chēng)為隊(duì)尾(Tail/Rear出隊(duì)列:進(jìn)行刪除操作的一端稱(chēng)為隊(duì)頭(Head/Front)

Java 【數(shù)據(jù)結(jié)構(gòu)】 棧(Stack)和隊(duì)列(Queue)【神裝】,【Java】登神長(zhǎng)階 史詩(shī)般的Java成神之路,數(shù)據(jù)結(jié)構(gòu)

Java 【數(shù)據(jù)結(jié)構(gòu)】 棧(Stack)和隊(duì)列(Queue)【神裝】,【Java】登神長(zhǎng)階 史詩(shī)般的Java成神之路,數(shù)據(jù)結(jié)構(gòu)

??2.基本操作

方法
功能
boolean offer(E e) 入隊(duì)列
E poll() 出隊(duì)列
peek() 獲取隊(duì)頭元素
int size() 獲取隊(duì)列中有效元素個(gè)數(shù)
boolean isEmpty() 檢測(cè)隊(duì)列是否為空

注意Queue是個(gè)接口,在實(shí)例化時(shí)必須實(shí)例化LinkedList的對(duì)象,因?yàn)?/span>LinkedList實(shí)現(xiàn)了Queue接口。

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); // 從隊(duì)尾入隊(duì)列
    System.out.println(q.size());
    System.out.println(q.peek()); // 獲取隊(duì)頭元素
    q.poll();
    System.out.println(q.poll()); // 從隊(duì)頭出隊(duì)列,并將刪除的元素返回
    if(q.isEmpty()){
    System.out.println("隊(duì)列空");
    }else{
    System.out.println(q.size());
    }
}

這個(gè)示例展示了隊(duì)列的基本操作,包括入隊(duì)、出隊(duì)、查看隊(duì)頭元素和判空。隊(duì)列在 Java 中常用于實(shí)現(xiàn)任務(wù)調(diào)度、消息傳遞等場(chǎng)景,能夠有效管理元素的順序和執(zhí)行順序。

??三.總結(jié)與反思

??人類(lèi)也需要夢(mèng)想者,這種人醉心于一種事業(yè)的大公無(wú)私的發(fā)展,因而不能注意自身的物質(zhì)利益?!永锓蛉?/p>

? ? ? ? 在學(xué)習(xí) Java 中的棧(Stack)和隊(duì)列(Queue)這兩種經(jīng)典數(shù)據(jù)結(jié)構(gòu)時(shí),我深刻體會(huì)到它們的重要性和應(yīng)用廣泛性。通過(guò)掌握棧和隊(duì)列的基本操作,如入棧、出棧、入隊(duì)、出隊(duì),我加深了對(duì)數(shù)據(jù)結(jié)構(gòu)的理解。

????????在實(shí)踐中,我意識(shí)到需要關(guān)注空間復(fù)雜度和時(shí)間復(fù)雜度的問(wèn)題,尤其在處理大規(guī)模數(shù)據(jù)集時(shí)。異常處理也是學(xué)習(xí)中的重要環(huán)節(jié),確保程序能夠正常處理各種邊界情況。了解棧和隊(duì)列在算法和程序設(shè)計(jì)中的應(yīng)用場(chǎng)景,如表達(dá)式求值、任務(wù)調(diào)度等,為我提供了有效的工具。通過(guò)深入研究 Java 中不同的棧和隊(duì)列實(shí)現(xiàn)類(lèi),我學(xué)習(xí)了它們的特性和使用方法。

????????我希望進(jìn)一步應(yīng)用所學(xué)知識(shí),深入探索棧和隊(duì)列在更復(fù)雜算法和數(shù)據(jù)結(jié)構(gòu)中的應(yīng)用,提升自己的編程能力。通過(guò)不斷練習(xí)和實(shí)踐,我相信能夠更熟練地運(yùn)用棧和隊(duì)列,解決實(shí)際問(wèn)題,并在日常開(kāi)發(fā)中發(fā)揮它們的作用。我的學(xué)習(xí)之路將持續(xù)前行,為未來(lái)的軟件開(kāi)發(fā)工作做好準(zhǔn)備。


????????????????????????????????????????????????????????

以上,就是本期的全部?jī)?nèi)容啦,若有錯(cuò)誤疏忽希望各位大佬及時(shí)指出??

? 制作不易,希望能對(duì)各位提供微小的幫助,可否留下你免費(fèi)的贊呢??

?

到了這里,關(guān)于Java 【數(shù)據(jù)結(jié)構(gòu)】 棧(Stack)和隊(duì)列(Queue)【神裝】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Java學(xué)數(shù)據(jù)結(jié)構(gòu)(1)——抽象數(shù)據(jù)類(lèi)型ADT & 表List、棧Stack和隊(duì)列Qeue

    Java學(xué)數(shù)據(jù)結(jié)構(gòu)(1)——抽象數(shù)據(jù)類(lèi)型ADT & 表List、棧Stack和隊(duì)列Qeue

    1.抽象數(shù)據(jù)類(lèi)型Abstract data type的概念; 2.表list,java中的ArrayList和linkedlist以及vector的分析; 3.棧stack的分析以及應(yīng)用; 4.隊(duì)列queue的理解,以及rabbitmq的應(yīng)用; 抽象數(shù)據(jù)類(lèi)型(abstract data type,ADT)是帶有一組操作的一些對(duì)象的集合。抽象數(shù)據(jù)類(lèi)型是數(shù)學(xué)的抽象;在ADT的定義中沒(méi)有地

    2024年02月11日
    瀏覽(61)
  • 【LeetCode】設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu) | List、Stack、Queue、DLinkedList

    設(shè)計(jì)鏈表(中等) 707. 設(shè)計(jì)鏈表 冗余版 代碼復(fù)用簡(jiǎn)化版 用棧實(shí)現(xiàn)隊(duì)列(簡(jiǎn)單) 232. 用棧實(shí)現(xiàn)隊(duì)列 用隊(duì)列實(shí)現(xiàn)棧(簡(jiǎn)單) 225. 用隊(duì)列實(shí)現(xiàn)棧 方法一:雙隊(duì)列實(shí)現(xiàn) 方法二:?jiǎn)侮?duì)列實(shí)現(xiàn) 設(shè)計(jì)循環(huán)隊(duì)列(中等) 622. 設(shè)計(jì)循環(huán)隊(duì)列 使用數(shù)組實(shí)現(xiàn) 使用鏈表實(shí)現(xiàn) 設(shè)計(jì)循環(huán)雙端隊(duì)列(中

    2024年02月14日
    瀏覽(24)
  • Java 【數(shù)據(jù)結(jié)構(gòu)】 二叉樹(shù)(Binary_Tree)【神裝】

    Java 【數(shù)據(jù)結(jié)構(gòu)】 二叉樹(shù)(Binary_Tree)【神裝】

    ? ? 登神長(zhǎng)階 ?第五神裝 二叉樹(shù) Binary-Tree 目錄 ???一.樹(shù)形結(jié)構(gòu) ??1.概念 ??2.具體應(yīng)用 ???二.二叉樹(shù)(Binary Tree) ??1.概念 ???2.表現(xiàn)形式 ??3.特殊類(lèi)型 ??3.1完全二叉樹(shù)(Complete Binary Tree) ??3.2滿二叉樹(shù)(Full Binary Tree) ??4.性質(zhì)? ??5.二叉樹(shù)的遍歷 ??5.1前中后序遍歷

    2024年04月27日
    瀏覽(21)
  • 【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列-Queue

    【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列-Queue

    ? 作者:小胡_不糊涂 ?? 作者主頁(yè):小胡_不糊涂的個(gè)人主頁(yè) ?? 收錄專(zhuān)欄:淺談數(shù)據(jù)結(jié)構(gòu) ?? 持續(xù)更文,關(guān)注博主少走彎路,謝謝大家支持 ?? 隊(duì)列: 只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有先進(jìn)先出FIFO(FirstIn First Out) 入隊(duì)列:

    2024年02月08日
    瀏覽(25)
  • 數(shù)據(jù)結(jié)構(gòu):隊(duì)列Queue詳解

    數(shù)據(jù)結(jié)構(gòu):隊(duì)列Queue詳解

    隊(duì)列 :只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表。進(jìn)行插入操作的一端稱(chēng)為 隊(duì)尾 ,刪除操作的一端稱(chēng) 隊(duì)頭 。 入隊(duì)列 :進(jìn)行插入操作的一端稱(chēng)為 隊(duì)尾 。 出隊(duì)列 :進(jìn)行刪除操作的一端稱(chēng)為 隊(duì)頭 。 在 Java 中, Queue是個(gè)接口,底層是通過(guò)鏈表

    2024年02月11日
    瀏覽(25)
  • 【數(shù)據(jù)結(jié)構(gòu)】 隊(duì)列(Queue)與隊(duì)列的模擬實(shí)現(xiàn)

    【數(shù)據(jù)結(jié)構(gòu)】 隊(duì)列(Queue)與隊(duì)列的模擬實(shí)現(xiàn)

    隊(duì)列 :只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有==先進(jìn)先出FIFO(FirstIn First Out) ==入隊(duì)列: 進(jìn)行插入操作的一端稱(chēng)為 隊(duì)尾(Tail/Rear) 出隊(duì)列: 進(jìn)行刪除操作的一端稱(chēng)為 隊(duì)頭(Head/Front) 在Java中, Queue是個(gè)接口,底層是通過(guò)鏈表實(shí)現(xiàn)

    2024年02月11日
    瀏覽(14)
  • 【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列(Queue)的實(shí)現(xiàn) -- 詳解

    【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列(Queue)的實(shí)現(xiàn) -- 詳解

    1、概念 隊(duì)列 :只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有 先進(jìn)先出 FIFO(First In First Out)。 入隊(duì)列 :進(jìn)行 插入 操作的一端稱(chēng)為 隊(duì)尾 。 出隊(duì)列 :進(jìn)行 刪除 操作的一端稱(chēng)為 隊(duì)頭 。 2、結(jié)構(gòu) (1)隊(duì)列的順序存儲(chǔ)結(jié)構(gòu) 入隊(duì) ,不需要

    2024年02月15日
    瀏覽(21)
  • [數(shù)據(jù)結(jié)構(gòu) -- C語(yǔ)言] 隊(duì)列(Queue)

    [數(shù)據(jù)結(jié)構(gòu) -- C語(yǔ)言] 隊(duì)列(Queue)

    目錄 1、隊(duì)列 1.1 隊(duì)列的概念及結(jié)構(gòu) 2、隊(duì)列的實(shí)現(xiàn) 2.1 接口 3、接口的實(shí)現(xiàn) 3.1 初始化隊(duì)列 3.2 隊(duì)尾入隊(duì)列 分析: 3.3 隊(duì)頭出隊(duì)列 分析: 3.4 獲取隊(duì)列頭部元素 3.5 獲取隊(duì)列尾部元素 3.6 獲取隊(duì)列中有效元素個(gè)數(shù) 3.7 檢測(cè)隊(duì)列是否為空 3.7.1 int 類(lèi)型判空 3.7.2 bool 類(lèi)型判空 3.8 銷(xiāo)毀隊(duì)

    2024年02月07日
    瀏覽(17)
  • 【Golang】實(shí)現(xiàn)簡(jiǎn)單隊(duì)列(Queue)數(shù)據(jù)結(jié)構(gòu)

    ?在計(jì)算機(jī)科學(xué)中,隊(duì)列是一種特殊的線性數(shù)據(jù)結(jié)構(gòu),它遵循FIFO(先進(jìn)先出)原則。隊(duì)列中的元素只能從一端(稱(chēng)為隊(duì)尾或后端)添加,并且只能從另一端(稱(chēng)為隊(duì)頭或前端)移除。這種特性使得隊(duì)列在許多算法和數(shù)據(jù)結(jié)構(gòu)中都有廣泛的應(yīng)用,例如操作系統(tǒng)中的任務(wù)調(diào)度、網(wǎng)

    2024年01月19日
    瀏覽(24)
  • 隊(duì)列(Queue):先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)

    隊(duì)列(Queue):先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)

    隊(duì)列是一種基本的數(shù)據(jù)結(jié)構(gòu),用于在計(jì)算機(jī)科學(xué)和編程中管理數(shù)據(jù)的存儲(chǔ)和訪問(wèn)。隊(duì)列遵循先進(jìn)先出(First In, First Out,F(xiàn)IFO)原則,即最早入隊(duì)的元素首先出隊(duì)。這種數(shù)據(jù)結(jié)構(gòu)模擬了物理世界中的隊(duì)列,如排隊(duì)等待服務(wù)的人。 在本篇博客中,我們將詳細(xì)介紹隊(duì)列的概念、用途

    2024年02月05日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包