1. 程式人生 > 其它 >LeetCode-58-最後一個單詞的長度-不定義變數計算小於127位單詞長度(C)

LeetCode-58-最後一個單詞的長度-不定義變數計算小於127位單詞長度(C)

技術標籤:筆記資料結構佇列

1.佇列介紹
1)佇列是一個有序列表,可以用陣列或是連結串列實現。
2)遵循先進先出原則。即:先存入列表的資料,先取出。後存入的後取出

2.陣列模擬迴圈佇列思路
1)佇列的輸出、輸入時分別從前後兩端來處理,因此需要兩個變數front(隊頭)及rear(隊尾)來實現輸入及輸出。
2)front初始值=0;front指向佇列的第一個元素。
3)rear的初始值=0;rear指向佇列的最後一個元素的後一個位置。因此佇列的最大容量比陣列的長度少1。
4)佇列滿的條件為
(rear+1)%array.length(陣列長度)==front

5)佇列空的條件為front==rear


6)佇列中有效資料的個數**(rear+array.length-front)%array.length**。

程式碼實現

public class CricleArrayQueue {
    private int[] array;
    //隊頭
    private int front;
    //隊尾
    private int rear;

    //建立陣列
    public CricleArrayQueue(int maxSize){
        this.array=new int[maxSize];
    }

    //判斷佇列是否滿
    public boolean
isFull(){ if((rear+1)%array.length==front){ return true; } return false; } //判斷佇列是否空 public boolean isEmpty(){ if(front==rear){ return true; } return false; } //求出佇列中有效資料個數 public int size(){ return
(rear+array.length-front)%array.length; } //入隊 public void addQueue(int element)throws Exception{ if(isFull()){ throw new Exception("佇列已滿"); } array[rear]=element; //隊尾往下移一位 rear=(rear+1)%array.length; } //出隊 public int deQueue() throws Exception{ if(isEmpty()){ throw new Exception("佇列已空"); } int deQueueElement=array[front]; front=(front+1)%array.length; return deQueueElement; } //輸出有效佇列 public void outPut(){ //先判斷是否為空佇列 if(isEmpty()){ System.out.println("佇列為空,無法輸出"); return; } //把佇列想成一個環 //那麼front+size()為輸出個數! for(int i=front;i<front+size();i++){ System.out.println(array[i%array.length]); } } }

測試程式碼

 //測試
    public static void main(String[] args) {
        CricleArrayQueue queue=new CricleArrayQueue(4);
        System.out.println("佇列個數為:"+queue.size());
        queue.outPut();
        try{
            queue.addQueue(23);
            queue.addQueue(24);
            queue.addQueue(87);
            queue.addQueue(34);
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        try{
            queue.deQueue();
            queue.deQueue();
            queue.deQueue();
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        try{
            queue.addQueue(34);
            queue.addQueue(37);
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        queue.outPut();
        System.out.println("佇列個數為:"+queue.size());
    }

結果如下:
在這裡插入圖片描述