一、简介
1.1 概念
队列简称队
–他同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除;
在队列中把插入数据元素的一端称为队尾,删除数据元素的一端称为队头
;
向队尾插入元素称为进队和入队,新元素入队后成为新的队尾元素;从队列中删除元素称为离队或出队,元素出队后,其后续元素成为新的队头元素;
由于队列的插入和删除操作分别在队尾和队头进行,每个元素必然按照进入的次序离队,也就是说先进队的元素必然先离队,所以称队列为先进先出表
。
链式队列
–
1.2 结构图
二、简单实现
public class LinkQueue implements Queue {
Node front;
Node rear;
int count;
public LinkQueue() {
init();
}
public void init() {
front = rear = null;
count = 0;
}
public void append(Object obj) throws Exception {
Node node = new Node(obj, null);
if (rear != null) {
rear.next = node;
}
rear = node;
if (front == null) {
front = node;
}
count++;
}
public Object delete() throws Exception {
if (isEmpty()) {
new Exception("队列已空!");
}
Node node = front;
front = front.next;
count--;
return node.getElement();
}
public Object getFront() throws Exception {
if (!isEmpty()) {
return front.getElement();
} else {
return null;
}
}
public boolean isEmpty() {
return count == 0;
}
}
public class Node {
Object element;
Node next;
public Node(Node nextval) {
this.next = nextval;
}
public Node(Object obj, Node nextval) {
this.element = obj;
this.next = nextval;
}
public Node getNext() {
return this.next;
}
public Object getElement() {
return this.element;
}
public void setNext(Node nextval) {
this.next = nextval;
}
public void setElement(Object obj) {
this.element = obj;
}
public String toString() {
return this.element.toString();
}
}