真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java中隊(duì)列和棧結(jié)構(gòu)的示例分析

這篇文章主要介紹了java中隊(duì)列和棧結(jié)構(gòu)的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括衛(wèi)東網(wǎng)站建設(shè)、衛(wèi)東網(wǎng)站制作、衛(wèi)東網(wǎng)頁(yè)制作以及衛(wèi)東網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,衛(wèi)東網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到衛(wèi)東省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!

一、隊(duì)列結(jié)構(gòu)

1、基礎(chǔ)概念

隊(duì)列是一種特殊的線性表,特殊之處在于它只允許在表的前端(front)進(jìn)行刪除操作,而在表的后端(rear)進(jìn)行插入操作,和棧一樣,隊(duì)列是一種操作受限制的線性表。進(jìn)行插入操作的端稱(chēng)為隊(duì)尾,進(jìn)行刪除操作的端稱(chēng)為隊(duì)頭。

2、特點(diǎn)描述

隊(duì)列是一個(gè)有序列表,可以用數(shù)組或是鏈表來(lái)實(shí)現(xiàn),遵循先進(jìn)先出的原則。即:先進(jìn)入隊(duì)列的數(shù)據(jù),會(huì)先取出;后進(jìn)入隊(duì)列的數(shù)據(jù),要后取出;即FIFO原則。

入隊(duì)列示意圖

java中隊(duì)列和棧結(jié)構(gòu)的示例分析

出隊(duì)列示意圖

java中隊(duì)列和棧結(jié)構(gòu)的示例分析

通過(guò)上述兩張圖解,不難發(fā)現(xiàn)隊(duì)列結(jié)構(gòu)的一些特點(diǎn):

  • 先進(jìn)入的數(shù)據(jù)先出去;

  • 數(shù)據(jù)從隊(duì)尾進(jìn)入,從隊(duì)首出去;

  • 基于數(shù)組描述隊(duì)列下標(biāo)變更頻繁;

  • 出隊(duì)列算法可以基于容器大小取模;

隊(duì)列結(jié)構(gòu)的核心是對(duì)容器內(nèi)是否空、是否滿(mǎn)標(biāo)志的判斷算法,即容器為空不可再取,容器已滿(mǎn)無(wú)法再存;該算法結(jié)構(gòu)在倉(cāng)儲(chǔ)領(lǐng)域的適應(yīng)非常廣泛。

3、消息隊(duì)列

消息隊(duì)列就是基于數(shù)據(jù)結(jié)構(gòu)中的“先進(jìn)先出”策略實(shí)現(xiàn)的,將消息以排隊(duì)的方式放入隊(duì)列中,然后出隊(duì)列被消費(fèi):

java中隊(duì)列和棧結(jié)構(gòu)的示例分析

有時(shí)候某類(lèi)消息消費(fèi)需要有順序控制,即可以對(duì)消息中的公共ID做取模處理,即把某類(lèi)消息都置于一個(gè)隊(duì)列中即可。

4、API使用案例

LinkedList類(lèi)實(shí)現(xiàn)Queue隊(duì)列接口,因此可以基于LinkedList模擬隊(duì)列效果。

import java.util.LinkedList;
import java.util.Queue;

public class M01_Queue {
    public static void main(String[] args) {
        // 入隊(duì)列
        Queue queue = new LinkedList<>();
        queue.add("head") ;
        queue.add("middle") ;
        queue.add("tail") ;
        // 當(dāng)隊(duì)列出數(shù)據(jù)之后,size是不斷變化的
        int queueSize = queue.size() ;
        int loop = 0 ;
        // 根據(jù)隊(duì)列大小,不斷出隊(duì)列
        while (loop < queueSize) {
            System.out.println(queue.poll());
            System.out.println(queue);
            loop ++ ;
        }
    }
}

二、棧結(jié)構(gòu)

1、基礎(chǔ)概念

棧(stack)又名堆棧,它是一種運(yùn)算受限的線性表。限定僅在表尾進(jìn)行插入和刪除操作的線性表。這一端被稱(chēng)為棧頂,相對(duì)地,把另一端稱(chēng)為棧底。向一個(gè)棧插入新元素又稱(chēng)作進(jìn)棧、入棧或壓棧(push),它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個(gè)棧刪除元素又稱(chēng)作出棧或退棧(pop),它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。

2、特點(diǎn)描述

棧是一個(gè)先入后出的有序列表,添加和刪除只能在棧頂端(Top)操作,另一端為固定的一端,稱(chēng)為棧底(Bottom)。

入棧示意圖

java中隊(duì)列和棧結(jié)構(gòu)的示例分析

出棧示意圖

java中隊(duì)列和棧結(jié)構(gòu)的示例分析

通過(guò)上述兩張圖解,棧結(jié)構(gòu)的一些特點(diǎn)如下:

  • 進(jìn)棧出棧都要通過(guò)棧頂端操作;

  • 進(jìn)出棧都不移動(dòng)棧底指針;

  • 進(jìn)出棧都要移動(dòng)棧頂指針;

基于棧的定義可知,最先放入棧中元素在棧底,最后放入的元素在棧頂,從棧容器中而刪除元素剛好相反,最后放入的元素最先刪除,最先放入的元素最后刪除。

3、遞歸應(yīng)用

棧在Java編程中的常見(jiàn)應(yīng)用,(1)子程序的調(diào)用:在跳往子程序前,會(huì)將下個(gè)指令的地址存到堆棧中,直到子程序執(zhí)行完后再將地址取出,退回到原來(lái)的程序中;(2)處理遞歸調(diào)用:和子程序的調(diào)用類(lèi)似,除了存儲(chǔ)下一個(gè)指令的地址外,也要將參數(shù)、區(qū)域變量等數(shù)據(jù)存入堆棧中。

4、API使用案例

Stack棧API是Vector的一個(gè)子類(lèi),它實(shí)現(xiàn)了一個(gè)標(biāo)準(zhǔn)的后進(jìn)先出的棧,堆棧只定義了默認(rèn)構(gòu)造函數(shù),用來(lái)創(chuàng)建一個(gè)空棧,堆棧除了包括由Vector定義的所有方法,也定義了自己的一些方法。

import java.util.Stack;

public class M02_Stack {
    public static void main(String[] args) {
        // 入堆棧
        Stack stack = new Stack<>() ;
        stack.push("First") ;
        stack.push("Second") ;
        stack.push("Third") ;
        int stackSize = stack.size() ;
        int loop = 0 ;
        // 根據(jù)棧大小,不斷出棧
        while (loop < stackSize) {
            System.out.println(stack.pop());
            System.out.println(stack);
            loop ++ ;
        }
    }
}

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“java中隊(duì)列和棧結(jié)構(gòu)的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!


本文名稱(chēng):java中隊(duì)列和棧結(jié)構(gòu)的示例分析
轉(zhuǎn)載源于:http://weahome.cn/article/ijscod.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部