大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 實例簡析隊列的鏈式實現

實例簡析隊列的鏈式實現

更新時間:2020-12-23 17:45:20 來源:動力節點 瀏覽1258次

隊列是一種特殊的線性表,特殊之處在于它只允許在表的前端(front)進行刪除操作,而在表的后端(rear)進行插入操作,和棧一樣,隊列是一種操作受限制的線性表。在隊列的形成過程中,可以利用線性鏈表的原理,來生成一個隊列,也就是所謂的隊列的鏈式實現。基于鏈表的隊列,要動態創建和刪除節點,效率較低,但是可以動態增長。

 

隊列采用的FIFO(first in first out),新元素(等待進入隊列的元素)總是被插入到鏈表的尾部,而讀取的時候總是從鏈表的頭部開始讀取。每次讀取一個元素,釋放一個元素。所謂的動態創建,動態釋放。因而也不存在溢出等問題。由于鏈表由結構體間接而成,遍歷也方便。

 

維護一個指向隊首的front結點,一個指向隊尾的rear結點,和一個標識隊列大小的count變量:

private LinearNode front,rear;//指示隊首和隊尾

 

private int count;

 

構造函數:

 

public LinkedQueue()

    {

        front = null;

        rear = null;

        count = 0;

    }

 

在看代碼之前,先注意幾個非空判斷:

 

可以判斷隊列為空的條件:

 

head = null

tail = null

head = tail = null

 

 

入隊/出隊時需要的非空判斷:

 

enqueue(入隊):若為空 tail = head = node

dequeue(出隊)

 

出隊前空:return null

出隊后空:tail = head = null

鏈式實現:

 

package Queue;

 

import Bag.LinearNode;

 

public class LinkedQueue implements QueueADT {

    

    private LinearNode front,rear;

    private int count;

    

 

    public static void main(String[] args) {

        

        LinkedQueue queue = new LinkedQueue();

        

        System.out.println("依次將0到9入隊,然后連續出隊5次");

        for(int i = 0;i < 10;i++)

            queue.enqueue(i);

        for(int i = 0;i < 5;i++)

            queue.dequeue();

        System.out.println("隊列的大小為: " + queue.size());

        System.out.println("隊列為空嗎?: " + queue.isEmpty());

        System.out.println("隊列的頭為: " + queue.first());

 

    }

    

    

    public LinkedQueue()

    {

        front = null;

        rear = null;

        count = 0;

    }

 

    public int size() {

        return count;

    }

 

    public boolean isEmpty() {

        return (size() == 0);

    }

    

    public void enqueue(Object element) {

        LinearNode node = new LinearNode(element);

        if(isEmpty())

            front = rear = node;

        else

        {

            rear.setNext(node);

            rear = node;

        }

        count++;

    }

    

    public Object dequeue() {

        if(isEmpty())

        {

            System.out.println("隊列中沒有元素");

            System.exit(1);

        }

        

        Object result = front.getElement();    

        front = front.getNext();

        count--;

        return result;    

    }

 

    public Object first() {

        return front.getElement();

    }

    

}

結果:

 

依次將0到9入隊,然后連續出隊5次

隊列的大小為: 5

隊列為空嗎?: false

隊列的頭為: 5

 

我們再來看個例子:

 

public class LinkedQueue<E> {

 

    class Node<E> {

        E item;

        Node<E> next;

 

        public Node(E e) {

            this.item = e;

        }

    }

 

    private Node head; // 隊首

    private Node tail; // 隊尾

 

    public LinkedQueue() {

     // 隊列為空時 head = tail = null

        head = tail = null;

    }


    public void enqueue(E e) {

        Node node = new Node(e);


        // 隊列為空

        if(tail == null) {

            head = tail = node;

        }else {

            tail.next = node;

            tail = node;

        }

    }

 

    public E dequeue() {

        // 出隊前為空

        if (head == null) {

            return null;

        }

        E item = (E)head.item;

        // 出隊后空

        if (head.next == null) {

            head = tail = null;

        }

        return item;

    }

 

    public E peek() {

        return this.head == null ? null : (E)this.head.item;

    }

}

 

從上面代碼不難看出,鏈式隊列其實就是鏈表的基本操作,所以LinkedList也是Queue的一個實現。隊列的鏈式實現的本質是隊列的形成過程中,利用線性鏈表的原理,來生成一個隊列。想了解更多有趣的數據結構,學習更多的數據結構知識,可以觀看本站的數據結構和算法教程,讓我們的學習實現質的飛躍!


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产精品视频a | 免费看曰批女人爽的视频网址 | 97午夜影院| 欧美成人爽毛片在线视频 | a级毛片在线观看 | 国内精品久久久久久西瓜色吧 | 国产夜色视频 | 高清不卡毛片免费观看 | 久久国产成人 | 奇米影视四色狠狠888俺去啦 | 黄色录像日本 | 亚洲高清在线观看 | 成人看片免费无限观看视频 | 狠狠干中文字幕 | 亚洲精品香蕉一区二区在线观看 | 青青青视频精品中文字幕 | 婷婷六月色 | 亚洲精品高清在线一区二区三区 | 激情久久久久久久久久久 | 在线日韩观看 | 四虎影视www四虎免费 | 三级aaa黄特色| 成人亚洲性情网站www在线观看 | 亚洲精品在线视频 | 国产第一页久久亚洲欧美国产 | 免费爱爱片 | 成熟的女性强烈交性视频 | 最好看的毛片 | 国产日韩精品欧美一区色 | 国产亚洲精品国产 | 国产精品欧美日韩一区二区 | 91视频a| 久久网欧美 | 日本叼嘿视频 | 在线成人aa在线看片 | 精品国产网 | 国产福利第一页 | 亚洲综合图色 | 2020国产精品视频 | 国产一区曰韩二区欧美三区 | 亚洲日本在线观看 |