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

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

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

概念

隊(duì)列:只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有先進(jìn)先出FIFO(FirstIn First Out) 入隊(duì)列:進(jìn)行插入操作的一端稱為隊(duì)尾(Tail/Rear) 出隊(duì)列:進(jìn)行刪除操作的一端稱為隊(duì)頭(Head/Front)
【Java數(shù)據(jù)結(jié)構(gòu)】線性表-隊(duì)列

隊(duì)列的使用

在Java中,Queue是個(gè)接口,底層是通過鏈表實(shí)現(xiàn)的。
【Java數(shù)據(jù)結(jié)構(gòu)】線性表-隊(duì)列
【Java數(shù)據(jù)結(jié)構(gòu)】線性表-隊(duì)列
注意:Queue是個(gè)接口,在實(shí)例化時(shí)必須實(shí)例化LinkedList的對(duì)象,因?yàn)長inkedList實(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());
	}
}

隊(duì)列模擬實(shí)現(xiàn)

隊(duì)列中既然可以存儲(chǔ)元素,那底層肯定要有能夠保存元素的空間,通過前面線性表的學(xué)習(xí)了解到常見的空間類型有兩種:順序結(jié)構(gòu) 和 鏈?zhǔn)浇Y(jié)構(gòu)。

public class Queue {
    // 雙向鏈表節(jié)點(diǎn)
    public static class ListNode{
        ListNode next;
        ListNode prev;
        int value;
        ListNode(int value){
            this.value = value;
        }
    }
    ListNode first; // 隊(duì)頭
    ListNode last; // 隊(duì)尾
    int size = 0;
    // 入隊(duì)列---向雙向鏈表位置插入新節(jié)點(diǎn)
    public void offer(int e){
        ListNode newNode = new ListNode(e);
        if(first == null){
            first = newNode;
// last = newNode;
        }else{
            last.next = newNode;
            newNode.prev = last;
// last = newNode;
        }
        last = newNode;

        size++;
    }
    // 出隊(duì)列---將雙向鏈表第一個(gè)節(jié)點(diǎn)刪除掉
    public int poll(){
// 1. 隊(duì)列為空
// 2. 隊(duì)列中只有一個(gè)元素----鏈表中只有一個(gè)節(jié)點(diǎn)---直接刪除
// 3. 隊(duì)列中有多個(gè)元素---鏈表中有多個(gè)節(jié)點(diǎn)----將第一個(gè)節(jié)點(diǎn)刪除
        int value = 0;
        if(first == null){
            throw new RuntimeException("隊(duì)列沒有元素 poll失敗");
        }else if(first == last){
            last = null;
            first = null;
        }else{
            value = first.value;
            first = first.next;
            first.prev.next = null;
            first.prev = null;
        }
        --size;
        return value;
    }
    // 獲取隊(duì)頭元素---獲取鏈表中第一個(gè)節(jié)點(diǎn)的值域
    public int peek(){
        if(first == null){
            throw new RuntimeException("隊(duì)列沒有元素 peek失敗");
        }
        return first.value;
    }
    public int size() {
        return size;
    }
    public boolean isEmpty(){
        return first == null;
    }
}

循環(huán)隊(duì)列

實(shí)際中我們有時(shí)還會(huì)使用一種隊(duì)列叫循環(huán)隊(duì)列。如操作系統(tǒng)課程講解生產(chǎn)者消費(fèi)者模型時(shí)可以就會(huì)使用循環(huán)隊(duì)列。環(huán)形隊(duì)列通常使用數(shù)組實(shí)現(xiàn)。
【Java數(shù)據(jù)結(jié)構(gòu)】線性表-隊(duì)列
【Java數(shù)據(jù)結(jié)構(gòu)】線性表-隊(duì)列

如何區(qū)分空與滿

  1. 通過添加 size 屬性記錄
  2. 保留一個(gè)位置
  3. 使用標(biāo)記
    【Java數(shù)據(jù)結(jié)構(gòu)】線性表-隊(duì)列

雙端隊(duì)列 (Deque)

雙端隊(duì)列(deque)是指允許兩端都可以進(jìn)行入隊(duì)和出隊(duì)操作的隊(duì)列,deque 是 “double ended queue” 的簡稱。那就說明元素可以從隊(duì)頭出隊(duì)和入隊(duì),也可以從隊(duì)尾出隊(duì)和入隊(duì)。

Deque是一個(gè)接口,使用時(shí)必須創(chuàng)建LinkedList的對(duì)象。

【Java數(shù)據(jù)結(jié)構(gòu)】線性表-隊(duì)列文章來源地址http://www.zghlxwxcb.cn/news/detail-414499.html

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

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(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)文章

  • 線性數(shù)據(jù)結(jié)構(gòu):數(shù)組、受限數(shù)組(棧、隊(duì)列)、線性表

    線性數(shù)據(jù)結(jié)構(gòu):數(shù)組、受限數(shù)組(棧、隊(duì)列)、線性表

    ??數(shù)組(Array)是有序的元素序列。屬于線性結(jié)構(gòu)(有且僅有一個(gè)前驅(qū)、有且僅有一個(gè)后繼)。 ??數(shù)組的關(guān)鍵在于在內(nèi)存中的物理地址對(duì)應(yīng)的是 一段連續(xù)的內(nèi)存 。這意味著如果想要在任意位置刪除/新增一個(gè)元素,那么該位置往后的所有元素,都需要往前挪/往后挪一個(gè)位

    2024年03月09日
    瀏覽(23)
  • 數(shù)據(jù)結(jié)構(gòu)01-線性結(jié)構(gòu)-鏈表?xiàng)j?duì)列-棧篇

    數(shù)據(jù)結(jié)構(gòu)01-線性結(jié)構(gòu)-鏈表?xiàng)j?duì)列-棧篇

    線性結(jié)構(gòu)-棧 本系列為C++數(shù)據(jù)結(jié)構(gòu)系列,會(huì)介紹 線性結(jié)構(gòu),簡單樹,特殊樹,簡單圖等。本文為線性結(jié)構(gòu)部分。 線性結(jié)構(gòu) 【 3 】鏈表:單鏈表、雙向鏈表、循環(huán)鏈表 【 3 】棧 【 3 】隊(duì)列 棧是Stack一個(gè)后進(jìn)先出Last In First Out,LIFO的線性表,他要求只在表尾對(duì)數(shù)據(jù)執(zhí)行刪除和插

    2024年02月16日
    瀏覽(25)
  • 【數(shù)據(jù)結(jié)構(gòu)】線性表之棧、隊(duì)列

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

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

    2024年02月06日
    瀏覽(94)
  • 【數(shù)據(jù)結(jié)構(gòu)】受限制的線性表——隊(duì)列

    【數(shù)據(jù)結(jié)構(gòu)】受限制的線性表——隊(duì)列

    ??????????個(gè)人主頁?????????? ??????????數(shù)據(jù)結(jié)構(gòu)專欄?????????? ??????????上一篇文章:特殊的線性表——棧?????????? 上一章我們講了一種特殊的線性表只能在表尾進(jìn)行插入和刪除操作,接下來我們講一個(gè)和棧很相似的數(shù)據(jù)結(jié)構(gòu),它也是一種特

    2024年04月10日
    瀏覽(19)
  • 數(shù)據(jù)結(jié)構(gòu)--隊(duì)列的基本概念

    數(shù)據(jù)結(jié)構(gòu)--隊(duì)列的基本概念

    隊(duì)列其實(shí)是一種受限制的線性表 隊(duì)列(Queue):是 只允許在一端進(jìn)行插入或刪除操作 color{red}只允許在一端進(jìn)行插入或刪除操作 只允許在一端進(jìn)行插入或刪除操作 的線性表 重要術(shù)語: 隊(duì)頭、隊(duì)尾、空隊(duì)列 隊(duì)列的特點(diǎn): 先進(jìn)先出 color{green}先進(jìn)先出 先進(jìn)先出 First In First Out ( F l

    2024年02月11日
    瀏覽(27)
  • 【數(shù)據(jù)結(jié)構(gòu)篇】線性表2 —— 棧和隊(duì)列

    【數(shù)據(jù)結(jié)構(gòu)篇】線性表2 —— 棧和隊(duì)列

    前言:上一篇我們介紹了順序表和鏈表 (https://blog.csdn.net/iiiiiihuang/article/details/132615465?spm=1001.2014.3001.5501), 這一篇我們將介紹棧和隊(duì)列,棧和隊(duì)列都是基于順序表和鏈表來實(shí)現(xiàn)的 目錄 棧(Stack) 什么是棧 ? 棧的方法 和 使用 棧的模擬實(shí)現(xiàn)? 先初始化一下棧? 往棧里插入

    2024年02月09日
    瀏覽(20)
  • 【數(shù)據(jù)結(jié)構(gòu)初階】六、線性表中的隊(duì)列(C語言 -- 鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)隊(duì)列)

    【數(shù)據(jù)結(jié)構(gòu)初階】六、線性表中的隊(duì)列(C語言 -- 鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)隊(duì)列)

    ========================================================================= 相關(guān)代碼gitee自取 : C語言學(xué)習(xí)日記: 加油努力 (gitee.com) ?========================================================================= 接上期 : 【數(shù)據(jù)結(jié)構(gòu)初階】五、線性表中的棧(C語言 -- 順序表實(shí)現(xiàn)棧)_高高的胖子的博客-CSDN博客 ?

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

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

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

    2023年04月11日
    瀏覽(95)
  • 數(shù)據(jù)結(jié)構(gòu)筆記NO.1(緒論、線性表、棧隊(duì)列和矩陣的壓縮存儲(chǔ))

    數(shù)據(jù)結(jié)構(gòu)筆記NO.1(緒論、線性表、棧隊(duì)列和矩陣的壓縮存儲(chǔ))

    1、數(shù)據(jù)結(jié)構(gòu) 三要素 :邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)(物理結(jié)構(gòu))、數(shù)據(jù)的運(yùn)算。 (1)邏輯結(jié)構(gòu):是指數(shù)據(jù)元素之間的邏輯關(guān)系,即從邏輯關(guān)系上描述數(shù)據(jù),它與數(shù)據(jù)的存儲(chǔ)無關(guān),是獨(dú)立于計(jì)算機(jī)的。 (2)存儲(chǔ)結(jié)構(gòu)(物理結(jié)構(gòu)):是指數(shù)據(jù)在計(jì)算機(jī)中的表示(又稱映像),是用計(jì)算機(jī)語

    2024年02月04日
    瀏覽(14)
  • 數(shù)據(jù)結(jié)構(gòu)之線性表的類型運(yùn)用Linear Lists: 數(shù)組,棧,隊(duì)列,鏈表

    定義 一個(gè)最簡單,最基本的數(shù)據(jù)結(jié)構(gòu)。一個(gè)線性表由多個(gè)相同類型的元素穿在一次,并且每一個(gè)元素都一個(gè)前驅(qū)(前一個(gè)元素)和后繼(后一個(gè)元素)。 線性表的類型 常見的類型:數(shù)組、棧、隊(duì)列、鏈表 這些不同數(shù)據(jù)結(jié)構(gòu)的特性可以解決不同種類的問題 題面 題目描述 有

    2024年02月12日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包