队列是先进先出(FIFO, First-In-First-Out)的线性表,在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。
Java实现:
public class QueueTest<T> {
Note front;
Note rear;
public synchronized T push(T t){
if (front==null) {
front = new Note(t);
rear = front;
} else {
Note newNote = new Note(t);
front.setBefore(newNote);
newNote.setNext(front);
front = newNote;
}
return t;
}
public synchronized T pop(){
if (front == null && rear == null) {
return null;
} else if (front == rear) {
Note temp = rear;
front = null;
rear = null;
return temp.getValue();
} else {
Note temp = rear;
rear = temp.getBefore();
rear.setNext(null);
return temp.getValue();
}
}
private class Note{
private T value;
private Note next;
private Note before;
Note(T t){
value = t;
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
public Note getNext() {
return next;
}
public void setNext(Note next) {
this.next = next;
}
public Note getBefore() {
return before;
}
public void setBefore(Note before) {
this.before = before;
}
}
public static void main(String[] args) {
QueueTest<String> queue = new QueueTest<String>();
for(int i=0;i<10;i++){
queue.push(String.valueOf(i));
}
for(int i=0;i<10;i++){
System.out.println(queue.pop());
}
}
}
输出结果:
0
1
2
3
4
5
6
7
8
9