`
baby69yy2000
  • 浏览: 182768 次
  • 性别: Icon_minigender_1
  • 来自: 自己输入城市...
社区版块
存档分类
最新评论

有界队列

    博客分类:
  • Util
阅读更多
package Queue;
import java.util.NoSuchElementException;

/**
 * 有界队列
 */
public class BQueue<T> {
	private final T[] qArray;
	
	private int front, rear;
	
	private int capacity, count;
	
	public BQueue(int size) {
		capacity = size;
		qArray = (T[]) new Object[capacity];
		front = 0;
		rear = 0;
		count = 0;
	}
	
	public BQueue() {
		this(50);
	}
	
	public boolean isEmpty() {
		return count == 0;
	}
	
	public boolean isFull() {
		return count == capacity;
	}
	
	public int size() {
		return count;
	}
	
	public void push(T item) {
		if(isFull())
			throw new IndexOutOfBoundsException(
					"Queue overflow");
		
		qArray[rear] = item;
		rear = (rear + 1) % capacity;
		count++;
	}
	
	public T pop() {
		if(isEmpty())
			throw new NoSuchElementException(
					"Empty queue");
		
		T tmp;
		tmp = qArray[front];
		front = (front + 1) % capacity;
		count--;
		return tmp;
	}
	
	public static void main(String[] args) {
		BQueue<String> b = new BQueue<String>(10);
		b.push("A");
		b.push("B");
		b.push("C");
		//System.out.println(b.size()); // 3
		try {
			while(!b.isEmpty())
				System.out.println(b.pop());
		} catch(NoSuchElementException e) {
			System.err.println("Empty queue");
		}
	}
	
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics