Java 迴圈隊列的實現

來源:互聯網
上載者:User

標籤:結構   nbsp   全域變數   刪除   this   迴圈隊列   ati   變數   cto   

隊列概念

  隊列(Queue)是限定只能在一端插入、另一端刪除的線性表。允許刪除的一端叫做隊頭(front),允許插入的一端叫做隊尾(rear),沒有元素的隊列稱為“空隊列”。

  隊列具有先進先出(FIFO)的特性。

  普通順序隊列存在的問題

    在普通順序隊列中,入隊的操作就是先將尾指標rear右移一個單位,然後將元素值賦值給rear單位。出隊時,則是頭指標front後移一個單位。像這樣進行了一定數量的入隊和出隊操作後,可能會出現這樣的情況:

    尾指標rear已指到數組的最後有一個元素,即rear==MaxLen-1,此時若再數組的前面部分可能還有很多閑置空間,即這種溢出並非是真的沒有可用的儲存空間,故稱這種溢出現象為“假溢出”。顯然,必須要解決這一塊假溢出的問題,否則順序隊列就沒有太多使用價值。

  迴圈隊列

    迴圈隊列的儲存結構,頭、尾指標都和普通順序隊列相同。不同的只是將隊列視為“環狀結構”,即data[0]為緊接著data[MaxLen-1]的單元,為相鄰的元素,首位成為一個環。結構如下:(來自:百科)

 代碼實現

  全域變數:定義隊列長度

  

static int MaxLen;

  迴圈隊列基本資料結構的實現:

static class myQueue{            int front;            int rear;            int queueList[];            public myQueue() {                // TODO Auto-generated constructor stub                    queueList=new int[MaxLen];                front=0;                rear=0;            }}

  判空函數

public boolean isEmpty() {                if(front==rear){                return true;            }                return false;            }

  判滿函數

public boolean isFull(){                if(((rear+1)%MaxLen)==front){                    return true;                }                else{                    return false;                }            }

 取隊頭元素

 

public void queueFront(int getFront){                if(isEmpty()==false){                    getFront=queueList[(front+1)%MaxLen];                }                else {                    System.out.println("ERROR:Queue is Empty");                    return;                }            }

入隊

public void enQueue(int enData) {                if(isFull()==false){                    rear=(rear+1)%MaxLen;                    this.queueList[rear]=enData;                }                else{                    System.out.println("ERROR:Queue is Full");                    return;                }                            }

出隊

public void outQueue() {                if(isEmpty()==false){                    front=(front+1)%MaxLen;                }                else {                    System.out.println("ERROR:Queue is Empty");                    return;                }                            }

 

Java 迴圈隊列的實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.