一、队列说明:
队列和栈一样,也属于抽象数据类型,也主要是作为构思算法的辅助工具之一。不同的是队列的实现原理和栈不同,它采用的是FIFO(先进先出),而栈则是LIFO(后进先出)。
下面我们用数组来实现队列的描述,当然,队列的实现也可以采用链表等数据结构。
二、Java语言描述队列:
package com.solid.queue;
public class Queue {
//队首
private int front;
//队尾
private int rear;
//队列容量
private int maxSize;
//队列元素个数
private int nElems;
//数组描述队列
private long[] queArray;
/**
* 构造方法
*/
public Queue(int maxSize) {
this.maxSize = maxSize;
queArray = new long[maxSize];
front = 0;
rear = -1;
nElems = 0;
}
/**
* 入列
* @param value
*/
public void insert(long value) {
if(rear == maxSize) {
rear = -1;
}
queArray[++rear] = value;
nElems++;
}
/**
* 出列
* @return
*/
public long remove() {
long temp = queArray[front++];
if(front == maxSize) {
front = 0;
}
nElems--;
return temp;
}
/**
* 是否为空列
* @return
*/
public boolean isEmpty() {
return (nElems == 0);
}
/**
* 是否满列
* @return
*/
public boolean isFull() {
return (nElems == maxSize);
}
/**
* 查看列首元素
* @return
*/
public long peekFront() {
return queArray[front];
}
/**
* 队列元素个数
* @return
*/
public int size() {
return nElems;
}
}