필기 데이터 구조 - 동적 배열 기반 대기 열

2366 단어
1. 대기 열 기초
  • 대기 열 은 선진 적 인 데이터 구조 (선착순 First In First Out)
  • 이다.
  • 대열 도 일종 의 선형 구조
  • 배열 에 비해 대열 에 대응 하 는 동작 은 배열 의 부분 집합
  • 이다.
  • 한 끝 (팀 꼬리) 에서 만 요 소 를 추가 하고 다른 한 끝 (팀 머리) 에서 요 소 를 추출 할 수 있 습 니 다
  • 2. 손 글씨 로 동적 배열 을 바탕 으로 하 는 대기 행렬 과 복잡 도 분석
    package com.tc.javabase.datastructure.array.queue;
    
    import com.tc.javabase.datastructure.array.ArrayList;
    import com.tc.javabase.datastructure.queue.Queue;
    
    /**
     *            
     *
     *      :    
     *
     *                          
     *  *        :
     *  *    :O(1)
     *  *    :O(n)
     *  *        :O(1)
     *
     * @param 
     */
    public class ArrayQueue implements Queue {
    
        private ArrayList arrayList;
    
        public ArrayQueue(int capacity){
            arrayList = new ArrayList<>(capacity);
        }
    
        public ArrayQueue(){
            arrayList = new ArrayList<>();
        }
    
        @Override
        public int getSize(){
            return arrayList.getSize();
        }
    
        @Override
        public boolean isEmpty(){
            return arrayList.isEmpty();
        }
    
        public int getCapacity(){
            return arrayList.getCapacity();
        }
    
        /**
         *   
         *      :O(1)
         * @param e
         */
        @Override
        public void enqueue(E e){
            arrayList.addLast(e);
        }
    
        /**
         *   
         *      :O(n)
         * @return
         */
        @Override
        public E dequeue(){
            return arrayList.removeFirst();
        }
    
        /**
         *       
         *      : O(1)
         * @return
         */
        @Override
        public E getFront(){
            return arrayList.getFirst();
        }
    
        @Override
        public String toString(){
            StringBuilder res = new StringBuilder();
            res.append("Queue: ");
            res.append("front [");
            for(int i = 0; i < arrayList.getSize() ; i ++){
                res.append(arrayList.get(i));
                if(i != arrayList.getSize() - 1)
                    res.append(", ");
            }
            res.append("] tail");
            return res.toString();
        }
    
        public static void main(String[] args) {
    
            ArrayQueue queue = new ArrayQueue<>();
            for(int i = 0 ; i < 10 ; i ++){
                queue.enqueue(i);
                System.out.println(queue);
                if(i % 3 == 2){
                    queue.dequeue();
                    System.out.println(queue);
                }
            }
        }
    }
    

    좋은 웹페이지 즐겨찾기