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

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

實例簡析隊列的鏈式實現

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

隊列是一種特殊的線性表,特殊之處在于它只允許在表的前端(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的一個實現。隊列的鏈式實現的本質是隊列的形成過程中,利用線性鏈表的原理,來生成一個隊列。想了解更多有趣的數據結構,學習更多的數據結構知識,可以觀看本站的數據結構和算法教程,讓我們的學習實現質的飛躍!


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久操精品视频 | 91一区二区三区四区五区 | 99视频这里有精品 | 亚洲精品国产福利在线观看 | 激情五月婷婷色 | 成年人免费网址 | 久久香蕉国产线看观看精品蕉 | 国产乱在线 | 在线观看亚洲精品国产 | 天天婷婷 | 中文字幕在线观 | 久久成年人视频 | 久久精热 | 欧美精品一区二区精品久久 | 日本不卡免费新一区二区三区 | 国产成人精品亚洲77美色 | 亚洲女精品一区二区三区 | 9热在线精品视频观看 | 青青热久免费精品视频精品 | 国产精品成人免费视频 | 日本aⅴ在线不卡免费观看 日本aaaa | 全免费午夜一级毛片真人 | 在线播放国产精品 | 亚洲久久综合 | 国产成人精品日本亚洲语言 | 成人精品视频 成人影院 | 三上悠亚在线一区 | 五月婷婷在线播放 | 国产高清一区二区三区 | 伦理一区 | 九九99国产精品视频 | 精品无人区乱码1区2区3区在线 | 国产一区精品视频 | 九九精彩视频在线观看视频 | 最新国产一区二区精品久久 | 日本免费新一区二区三区 | 欧美毛片在线播放观看 | 四虎影视国产永久免费 | 一级毛片日本特黄97人人 | 九九热在线免费观看 | 国产视频久久 |