數據結構和算法之數組實現環形隊列

思路:

  • 1、循環隊列和非循環隊列類似,但是要注意隊列空和隊列滿的情況
  • 2、隊列空 tail = head
  • 3、隊列滿 (tail+1)%capacity = head
/**
 * 循數組實現循環隊列
 * Author : BlueSky 2019.11.05
 * 思路:
 * 1、循環隊列和非循環隊列類似,但是要注意隊列空和隊列滿的情況
 * 2、隊列空 tail = head
 * 3、隊列滿 (tail+1)%capacity = head
 */
public class ArrayCircularQueue {


    public  static class CircularQueue{

        /**
         * 數組
         */
        private String[] array;

        /**
         * 容量
         */
        private Integer capacity;

        /**
         * 頭指針
         */
        private Integer head = 0;

        /**
         * 尾指針
         */
        private Integer tail = 0;

        public boolean add(String data){
            int i = (tail + 1) % capacity;
            if( i == head){
                return false;
            }
            // 賦值
            array[tail] = data;
            // 尾指針復位
            tail = i;
            return true;
        }

        public String poll(){
            if(tail.equals(head)){
                return null;
            }
            // 取值
            String res = array[head];
            // 頭指針復位
            head = (head + 1) % capacity;
            return res;
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章