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

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

时间:2014-11-23 09:21:48      阅读:199      评论:0      收藏:0      [点我收藏+]

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

package queue.sequencequeue;
/**
 * 队列的定义:队列是只允许在一端进行插入操作,而在另外一端进行删除操作的线性表
 * 队列是一种先进先出(First In First Out)的线性表,简称FIFO,允许插
 * 入的一端称为队尾,允许删除的一端称为队头
 * @author wl
 *
 */
public class SequenceQueue {
	private Object[] elementData;//用数组来保存队列的元素
	private int front;//队列的头指针
	private int rear;//队列的尾指针
	
	//无参构造函数
	public SequenceQueue(){
		elementData=new Object[10];
		front=0;
		rear=0;
	}
	
	//带参构造函数,指定数组的初始化长度
	public SequenceQueue(int capacity){
		elementData=new Object[capacity];
		front=0;
		rear=0;
	}
	
	//队列的大小
	public int size(){
		return rear-front;
	}
	
	//判断队列是否为空
	public boolean isEmpty(){
		int size=size();
		return size==0;
	}
	
	//判断队列是否已满
	public boolean isFull(){
		int size=size();
		return size==elementData.length;
	}
	
	//入队列
	public void enQueue(int data){
		if(isFull()){
			throw new IndexOutOfBoundsException("队列已满");
		}
		
		elementData[rear++]=data;
	}
	
	//出队列
	public Object deQueue(){
		if(isEmpty()){
			throw new IndexOutOfBoundsException("队列为空");
		}
		//得到对头元素
		Object data=elementData[front];
		//释放对头元素
		elementData[front++]=null;
		return data;
	}
	
	//得到对头元素,不删除
	public Object getFront(){
		if(isEmpty()){
			return null;
		}else{
			return elementData[front];
		}
	}
	
	//打印队列中的元素
	public void traverse(){
		if(isEmpty()){
			System.out.println("null");
		}else{
			for(int i=front;i<rear;i++){
				System.out.print(elementData[i]+" ");
			}
		}
		System.out.println();
	}
}

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

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

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

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