(データ構造とアルゴリズム分析四)------配列ループキューの実現(Java言語記述)


キューに対して、彼の重要性はスタックに劣らず、キューとスタックが協力して使用されることが多い.スタックは後進先出であり、キューは先進先出であるため、多くの問題がこの2つのデータ構造によって魂環の呼び出しを行うことによって解決される可能性がある.もちろん、配列が実現されたキューに対して、彼の入隊と出隊は非常に迅速である.また、通常使用されているキューはあまり大きくなく、ループキューの考えがあり、さらに配列実現のキューはより良い応用があり、以下のくだらないことは多くありません.
package com.bird.three;

/**
 * @category        
 * @author Bird
 *
 */
public class QueueArray {
	
	private Object[] theArray;
	private int currentSize;
	private int front;
	private int back;
	
	private static final int DEFAULT_CAPACITY = 10;
	
	/**
	 * Construct
	 */
	public QueueArray(){
		this(DEFAULT_CAPACITY);
	}
	
	public QueueArray(int capacity){
		theArray = new Object[capacity];
		makeEmpty();
	}

	public boolean isEmpty(){
		return currentSize == 0;
	}
	
	public boolean isFull(){
		return currentSize == theArray.length;
	}
	
	public void makeEmpty(){
		currentSize = 0;
		front = 0;
		back = -1;
	}
	
	/**
	 *      
	 * @param x       
	 * @exception          
	 */
	
	public void enQueue(Object x){
		if(isFull())
			throw new RuntimeException("    ");
		back = increment(back);
		theArray[back]= x;
		currentSize++;
	}
	
	/**
	 *          ,         ,               0     
	 * @param x       
	 * @return x+1;  0(  X     )
	 */
	private int increment(int x){
		if(++x == theArray.length)
			x = 0;
		return x;
	}
	
	
	/**
	 *             
	 * @return       ,  null      
	 */
	
	public Object deQueue(){
		if(isEmpty())
			return null;
		currentSize--;
		
		Object frontItem = theArray[front];
		theArray[front]=null;
		front = increment(front);
		return frontItem;
		}
	
}