數據結構與算法-1.2用數組實現循環隊列

package com.mytest.controller;


import java.util.Arrays;

public class Demo02 {

    public static int[] array = new int[10];
    public static void main(String[] args) {
        Queue queue = new Queue();
        queue.setMaxSize(array.length);
        queue.setHeadFlag(0);
        queue.setEndFlag(0);

        System.out.println(Arrays.toString(array));
        // 先取空值
        System.out.println(getElement(queue));
        System.out.println(Arrays.toString(array));
        // 第一次添加值
        System.out.println(addElement(queue,111));
        System.out.println(addElement(queue,222));
        System.out.println(addElement(queue,333));
        System.out.println(Arrays.toString(array));
        // 取值
        System.out.println(getElement(queue));
        System.out.println(Arrays.toString(array));
        System.out.println(getElement(queue));
        System.out.println(Arrays.toString(array));
        System.out.println(getElement(queue));
        System.out.println(Arrays.toString(array));
        System.out.println(getElement(queue));
        System.out.println(Arrays.toString(array));
        // 添加十個值
        System.out.println(addElement(queue,111));
        System.out.println(Arrays.toString(array));
        System.out.println(addElement(queue,222));
        System.out.println(addElement(queue,333));
        System.out.println(addElement(queue,444));
        System.out.println(addElement(queue,555));
        System.out.println(addElement(queue,666));
        System.out.println(addElement(queue,777));
        System.out.println(addElement(queue,888));
        System.out.println(Arrays.toString(array));
        System.out.println(addElement(queue,999));
        System.out.println(Arrays.toString(array));
        System.out.println(addElement(queue,1000));
        System.out.println(Arrays.toString(array));

        // 取值
        System.out.println(getElement(queue));
        System.out.println(Arrays.toString(array));
        System.out.println(getElement(queue));
        System.out.println(Arrays.toString(array));
        System.out.println(getElement(queue));
        System.out.println(Arrays.toString(array));
        System.out.println(getElement(queue));
        System.out.println(Arrays.toString(array));
        System.out.println(getElement(queue));
        System.out.println(Arrays.toString(array));
        System.out.println(getElement(queue));
        System.out.println(Arrays.toString(array));
        System.out.println(getElement(queue));
        System.out.println(Arrays.toString(array));
        System.out.println(getElement(queue));
        System.out.println(Arrays.toString(array));
        System.out.println(getElement(queue));
        System.out.println(Arrays.toString(array));
        System.out.println(getElement(queue));
        System.out.println(Arrays.toString(array));
    }

    static String addElement(Queue queue,Integer num){
        Integer headFlag = queue.getHeadFlag();
        Integer endFlag = queue.getEndFlag();
        Integer maxSize = queue.getMaxSize();
        if (headFlag==0 && endFlag ==0){
            array[0]=num;
            queue.setEndFlag(1);
            return "添加成功";
        }
        if (endFlag>headFlag && endFlag-headFlag >=maxSize-1 || endFlag<headFlag && headFlag-endFlag <=1){
            return "添加失敗,隊列已滿";
        }
        if (endFlag==maxSize-1){
            array[endFlag] = num;
            queue.setEndFlag(0);
            return "添加成功";
        }
        array[endFlag] = num;
        queue.setEndFlag(++endFlag);
        return "添加成功";
    }

    static String getElement(Queue queue){
        Integer headFlag = queue.getHeadFlag();
        Integer endFlag = queue.getEndFlag();
        Integer maxSize = queue.getMaxSize();
        if (headFlag==endFlag){
            return "獲取失敗;隊列爲空";
        }
      /*  if (headFlag==0){

        }*/
        if (headFlag==maxSize-1){
            array[headFlag]=0;
            queue.setHeadFlag(0);
            return "獲取成功";
        }
        array[headFlag] = 0;
        queue.setHeadFlag(++headFlag);
        return "獲取成功";
    }
}
package com.mytest.controller;

import java.util.Objects;

public class Queue {
    // 數組最大存儲值
    private Integer maxSize;
    // 數組中隊列的頭位置
    private Integer headFlag;
    // 數組中隊列的尾位置
    private Integer endFlag;

    public Queue() {
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Queue queue = (Queue) o;
        return Objects.equals(maxSize, queue.maxSize) &&
                Objects.equals(headFlag, queue.headFlag) &&
                Objects.equals(endFlag, queue.endFlag);
    }

    @Override
    public int hashCode() {
        return Objects.hash(maxSize, headFlag, endFlag);
    }

    @Override
    public String toString() {
        return "Queue{" +
                "maxSize=" + maxSize +
                ", headFlag=" + headFlag +
                ", endFlag=" + endFlag +
                '}';
    }

    public Integer getMaxSize() {
        return maxSize;
    }

    public void setMaxSize(Integer maxSize) {
        this.maxSize = maxSize;
    }

    public Integer getHeadFlag() {
        return headFlag;
    }

    public void setHeadFlag(Integer headFlag) {
        this.headFlag = headFlag;
    }

    public Integer getEndFlag() {
        return endFlag;
    }

    public void setEndFlag(Integer endFlag) {
        this.endFlag = endFlag;
    }
}

 

 

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