用Java实现链式队列的初始化,入队和出队。
利用头指针和尾指针。入栈操作将节点添加在队尾,只需移动尾指针即可。
出队操作利用头指针,将头节点指向下一个,然后将头节点弹出队列即可,判断所有元素均出队之后返回队空。这样就可以满足队列先进先出的特点。
package com.yc.algorithm.queue;
/**
* 链式队列
* @author yc
*/
public class Queue {
private QNode front;
private QNode rear;
public Queue() {
QNode ndoe = new QNode(null);
front = rear = ndoe;
rear.next = null;
}
/**
* 入队列
*/
public void put(Object value) {
System.out.println("入队: " + value);
QNode node = new QNode(value);
node.next = rear.next;
rear.next = node;
rear = node;
}
/**
* 出队列
* @return
*/
public Object get() {
if (front.next == null) {
System.out.println("队列空啦");
return null;
}
QNode node = front.next;
front.next = front.next.next;
System.out.println("出队 : " + node.value);
return node;
}
public static void main(String[] args) {
Queue queue = new Queue();
queue.put(1);
queue.put(2);
queue.put(3);
queue.put(4);
queue.put(5);
queue.get();
queue.get();
queue.get();
queue.get();
queue.get();
queue.get();
queue.get();
}
}
class QNode {
Object value;
QNode next;
public QNode(Object value) {
this.value = value;
}
}
运行结果如下: