基於數組實現JAVA的隊列存儲結構

隊列是一種特殊的線性表,它只允許在表的前段(front)進行刪除操作,只允許在表的後端(rear)進行插入操作。進行插入操作的端稱爲隊尾,進行刪除操作的端稱爲隊頭。

對於一個隊列來說,每個元素總是從隊列的rear端進入隊列,然後等待該元素之前的所有元素出隊之後,當前元素才能出對,遵循先進先出(FIFO)原則。

public class Queue {
    private int max_size;
    private int[] queueArry;
    private int front;
    private int rear;
    private int number;
    public Queue(int i){                //構造方法
        max_size=i;
        queueArry=new int[max_size];
        front=0;
        rear=-1;
        number=0;
    }
    public void insert(int i){          //入列
       /* if(rear==max_size-1){
            rear=-1;
        }*/
        queueArry[++rear]=i;
        number++;
    }
    public int remove(){                //出列
        int temp=queueArry[front++];
       /* if(front==max_size){
            front=0;
        }*/
        number--;
        return temp;
    }
    public int peekFront(){           //查看隊頭元素
        return queueArry[front];
    }
    public boolean isEmpty(){         //判空
        return (number==0);
    }
    public boolean isFull(){          //判滿
        return (number==max_size);
    }
    public int size(){                //隊列元素個數
        return number;
    }
}

測試類

public class QueueApp {
    public static void main(String args[]){
            Queue queue=new Queue(10);       //創建一個固定長度的隊列
            queue.insert(5);
            queue.insert(3);
            queue.insert(7);
            queue.insert(2);    //5 3 7 2 
            queue.remove();
            queue.remove();     // 7 2 
            queue.insert(9);
            queue.insert(1);
            queue.insert(8);    //7 2 9 1 8
            while (!queue.isEmpty()){
                System.out.print( queue.remove()+" ");
            }
    }
}

運行結果:7 2 9 1 8

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章