package com.vvv.base; public class Queue { QueueNode head; QueueNode tail; private int size; public Queue() { this.head = null; this.tail = null; } public void enQueue(Object o) { if (head == null && tail == null) { tail = new QueueNode(o); head = tail; } else { QueueNode node = new QueueNode(o); tail.next = node; tail = tail.next; } size++; } public Object deQueue() { if (head == null) { return null; } if (head == tail && tail != null) { QueueNode node = head; tail = null; head = null; size--; return node.data; } Object obj = head.data; head = head.next; size--; return obj; } public boolean isEmpty() { if(head==null && tail == null) return true; return false; } public int size() { return size; } } class QueueNode { Object data; QueueNode next; public QueueNode() { this(null, null); } public QueueNode(Object data) { this(data, null); } public QueueNode(Object data, QueueNode next) { this.data = data; this.next = next; } }