码迷,mamicode.com
首页 > 编程语言 > 详细

Java数据结构系列之——队列(2):循环队列的顺序存储结构及其实现

时间:2014-11-23 09:19:33      阅读:376      评论:0      收藏:0      [点我收藏+]

标签:io   ar   java   for   数据   on   as   size   new   

package queue.circleSequenceQueue;
/**
 * 这里我们规定队列满时数组中还有一个空闲空间,不允许将数组中的空间全部存满
 * 循环队列满的条件是:(rear+1)%QueueSize==front
 * 长度计算公式为:(rear-front+QueueSize)%QueueSize
 * @author wl
 */
public class CircleSequenceQueue {
	Object[] elementData;//数组用于存放队列元素
	int front;//对头指针
	int rear;//队尾指针
	int QueueSize;//队列大小
	
	//无参构造函数,用于队列的默认初始化
	public CircleSequenceQueue(){
		elementData=new Object[10];
		front=0;
		rear=0;
		QueueSize=elementData.length;
	}
	
	//带参构造函数,用于指定队列初始化长度
	public CircleSequenceQueue(int capacity){
		elementData=new Object[capacity];
		front=0;
		rear=0;
		QueueSize=elementData.length;
	}
	
	
	//队列的大小
		public int size(){
			return (rear-front+QueueSize)%QueueSize;
		}
		
		//判断队列是否为空
		public boolean isEmpty(){
			return front==rear;
		}
		
		//判断队列是否已满
		public boolean isFull(){
			return (rear+1)%QueueSize==front;
		}
		
		//入队列
		public void enQueue(int data){
			if(isFull()){
				throw new IndexOutOfBoundsException("队列已满");
			}
			
			elementData[rear]=data;//将data元素加入队尾
			rear=(rear+1)%QueueSize;//将rear指针向后移动一位,如果rear到最后则转移到数组头部
		}
		
		//出队列
		public Object deQueue(){
			if(isEmpty()){
				throw new IndexOutOfBoundsException("队列为空");
			}
			//得到对头元素
			Object data=elementData[front];
			//释放对头元素
			elementData[front]=null;
			//front指针向后移动一位,若到最后则转移到数组头部
			front=(front+1)%QueueSize;
			
			return data;
		}
		
		//得到对头元素,不删除
		public Object getFront(){
			if(isEmpty()){
				return null;
			}else{
				return elementData[front];
			}
		}
		
		//打印队列中的元素
		public void traverse(){
			if(isEmpty()){
				System.out.println("null");
			}else{
				int counter=0;//计数器
				for(int i=front;counter<=size();){
					if(elementData[i]!=null){
						System.out.print(elementData[i]+" ");
					}
					i=(i+1)%QueueSize;
					counter++;
				}
			}
			System.out.println();
		}
	
}

Java数据结构系列之——队列(2):循环队列的顺序存储结构及其实现

标签:io   ar   java   for   数据   on   as   size   new   

原文地址:http://blog.csdn.net/tmwl0728/article/details/41400153

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!