黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

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

實例簡析隊列的鏈式實現

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

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


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 午夜久久免影院欧洲 | 深夜影院老司机69影院 | 97狠狠干 | 国产日韩欧美第一页 | 欧美a色爱欧美综合v | 无遮挡高清一级毛片免费 | 日韩在线播放一区 | 国产精品二区三区 | 香蕉视频黄色 | 久在草在线 | 久久99综合| 国产一区二区在线观看动漫 | 九九视频免费精品视频免费 | 国产国产成人人免费影院 | 成人在线综合 | 在线观看视频一区 | 成年在线观看网站免费视频 | 日日天干夜夜人人添 | 一级做a爰片毛片 | 一区二区在线免费视频 | 国产精品欧美一区二区 | 成人黄色免费看 | 免费网站成人亚洲 | 性做久久久久久免费观看 | 手机在线免费观看毛片 | 日本一区二区高清不卡 | 一级片免费在线观看视频 | 毛片大全在线 | 极品福利视频 | 曰皮全部过程视频免费国产 | 天干天干夜天干天天爽 | 免费一级在线观看 | 成人欧美日本免费观看 | 高清性色生活片a | 亚洲色图 在线视频 | 亚洲国产日韩无在线播放 | 欧美一区二区三区不卡免费观看 | 99re视频这里只有精品 | 亚洲午夜精品久久久久久人妖 | 欧美日韩不卡高清 | 在线黄色免费看 |