一、队列介绍
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列也是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
队列的特点:先进先出
二、队列的简单操作
1、队列的定义
/**
* 队列的接口
* @author hoaven
*/
public interface IQueue<T> {
/**
* 入队列操作
* @param item
*/
void enqueue(T item);
/**
* 出队列操作
* @return
*/
T dequeue();
/**
* 返回队列头,但不出队列
* @return
*/
T peek();
/**
* 队列是否为空
* @return
*/
boolean isEmpty();
}
2、队列的基本实现
/**
* 队列的实现
*
* @author hoaven
* @see IQueue
* @see Node
*/
public class Queue<T> implements IQueue<T> {
//队列头结点、尾结点
Node<T> first, last;
public void enqueue(T item) {
if (first == null) {
last = new Node<T>(item);
first = last;
} else {
last.next = new Node<T>(item);
last = last.next;
}
}
public T dequeue() {
if (first != null) {
T item = first.data;
first = first.next;
return item;
}
return null;
}
public T peek() {
if (first != null) {
return first.data;
}
return null;
}
public boolean isEmpty() {
return first == null;
}
}