通过数组实现队列

package tt;
//通过数组实现队列
import java.util.NoSuchElementException;
//通过数组来实现队列
public class dd
{
	// 字段
	public static Object[] data;
	// 队列的元素个数
	protected int size;
	// 队列头
	protected int head;
	// 队列尾
	public static int tail;

	/**
  * 
  */
	// 无参数构造函数
	public dd()
	{
		final int INITIAL_LENGTH = 3;
		data = new Object[INITIAL_LENGTH];
		size = 0;
		head = 0;
		tail = -1;
	}

	// 队列元素个数方法
	public int size()
	{
		return size;

	}

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

	// 得到队列头元素
	public Object front()
	{
		if (size == 0)
			throw new NoSuchElementException();
		return data[head];

	}

	// 进入队列enqueue()方法
	public void enqueue(Object obj)
	{
		// 此时队列已经满
		if (size == data.length)
		{
			Object[] oldData = data;
			data = new Object[data.length * 2];
			// if(head==0)
			System.arraycopy(oldData, head, data, 0, oldData.length - head);
			if (head > 0)
				System.arraycopy(oldData, 0, data, head + 1, tail + 1);
			head = 0;
			tail = oldData.length - 1;

		}
		tail = (tail + 1) % data.length;
		size++;
		data[tail] = obj;

	}

	// 队列的元素出队
	public Object dequeue()
	{
		if (size == 0)
			throw new NoSuchElementException();
		Object ele = data[head];
		// 循环队列
		head = (head + 1) % data.length;
		size--;
		return ele;
	}

	@Override
	public String toString()
	{
		// TODO Auto-generated method stub
		return super.toString();
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值