数据结构之顺序队列

/*
 *@date:08-07-06

 *@descript:队列的实现

 **/

public class SeqQueue

{

	private static final int defaultSize=10;//默认大小

	private int front;//队头

	private int rear;//对尾 

	private int count;//元素个数统计器

	private int maxQueueSize;//最大数据个数

	private Object[] queue;//数组对象

	

	

	//无参构造函数,创建默认大小的队列

	public SeqQueue()

	{

		this(defaultSize);	

	}

	//带参构造函数,用来创建指定大小的队列

	public SeqQueue(int size)

	{

		queue=new Object[size];

		maxQueueSize=size;

		front=rear=0;//设置队列的队头和队尾指针

		count=0;

	}

	//判断是否为空

	public boolean isEmpty()

	{

		return count==0;

	}

	//判断队列是否已满

	public boolean isFull()

	{

		return (count>0)&&(rear==front);

	}

	//入队列

	public boolean append(Object obj)

	{

		//判断队列是否已满,不满则进行入队操作

		if(!isFull())

		{

			queue[rear]=obj;//将新插入的元素放入队列

			rear=(rear+1)%maxQueueSize;//重新设定队尾指针

			count++;//元素计数器加 1

			return true;

		}else

		{

			System.out.println ("队列已满! "+obj+"无法插入!");

			return false;

		}

	}

	//出队列

	public Object delete()

	{

		Object ret=null;

		//判断是否为空

		if(!isEmpty())

		{

			ret=queue[front];//获取队列元素

			front=(front+1)%maxQueueSize;

			count--;//元素计算器减 1

		}else

		{

			System.out.println ("队列为空!");

		}

		return ret;

	}

	//获取队头元素

	public Object getHead()

	{

		Object ret=null;

		if(!isEmpty()) //队列非空

		{

			ret=queue[front];//获取队头元素

			

		}else

		{

			System.out.println ("队列为空!");

		}

		return ret;

	}

	// 清空队列

	public void clear()

	{

		count=0;//元素计数器清 0

		front=rear=0; //队头指针指向队尾指针

	}

	

	public static void main(String[] args)

    {

    	SeqQueue myQueue=new SeqQueue(5);//初始化队列的空间大小为 5

    	int[] data={1,3,5,7,9,11};

    	try{

    		

    		System.out.println ("入队元素序列为:");

    		//将数据入队

			for (int i = 0; i<data.length; i++)

		    {

		    	myQueue.append(new Integer(data[i]));

		    	System.out.print (data[i]+" ");

		    }

		    System.out.println ("");

		    System.out.println("当前队头元素为:"+myQueue.getHead());

			System.out.print ("出队元素序列为:");

			//将数据出队

			while(!myQueue.isEmpty())

			{

				System.out.print(myQueue.delete()+" ");

			}    

    		

	    }

	    catch (Exception ex) {

	     	ex.printStackTrace();

	    }

    	

    }

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值