您当前的位置: 首页 >  Java
  • 3浏览

    0关注

    674博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java用循环数组实现队列

沙漠一只雕得儿得儿 发布时间:2017-05-13 17:28:07 ,浏览量:3

需要实现的方法:

public interface My_queue {
	void add(T t);
	T remove();
	int size();
	boolean isEmpty();
	T front();
}
定义自己的数组队列:

public class My_arrayQueue implements My_queue{

	private T[] data;
	private int size;
	private int front;
	private int rear;
	public My_arrayQueue() {
		data = (T[])new Object[3];
		size = 0;
		front = 0;
		rear = 0;
	}
	
	@Override
	public void add(T t) {
		if(isFull()){
			resize();
			front = 0;
		}
		rear = (front+size)%data.length;
		data[rear] = t;
		size++;
	}

	@Override
	public T remove() {
		if(isEmpty()){
			throw new RuntimeException("queue is empty!");
		}
		T tempData = data[front];
		data[front] = null;
		front = (front+1)%data.length;
		size--;
		return tempData;
	}

	@Override
	public int size() {
		return size;
	}

	@Override
	public boolean isEmpty() {
		return size == 0;
	}

	@Override
	public T front() {
		if(isEmpty()){
			throw new RuntimeException("queue is empty!");
		}
		return data[front];
	}
	
	public boolean isFull(){
		return size == data.length;
	}
	
	public void resize(){
		T[] tmp = (T[])new Object[data.length*2];
		System.arraycopy(data, 0, tmp, 0, data.length);
		data = tmp;
		tmp = null;
	}

}
测试类:

public class arrayTest {
	public static void main(String[] args){
		My_arrayQueue arr = new My_arrayQueue();
		arr.add(1);
		arr.add(2);
		arr.add(3);
		arr.add(4);
		arr.add(5);
		arr.add(6);
		System.out.println(arr.size()+" "+arr.isEmpty());
		while(!arr.isEmpty()){
			Integer temp = arr.remove();
			System.out.println(temp);
		}
	}
}

关注
打赏
1657159701
查看更多评论
立即登录/注册

微信扫码登录

0.1498s