链表式队列JAVA实现:
public class LinkedQueue<E>
{
static class Node<E>{
E item;
Node<E> next;
Node(E e)
{ item = e;
}
}
private Node<E> head;//头节点
private Node<E> last;//尾节点
private int size;
public boolean isEmpty(){
// return head == null;
return size ==
0;
}
//入队
public void enqueue(Node<E> node){
last = last.next = node;
last.next = head;
size++;
}
//出队
public E
dequeue(){
Node<E> n = head;
Node<E> first = head.next;
head = first;
E e = n.item;
n.item = null;
size--;
return e;
}
//获取大小
public int size(){
/*Node<E> tmp =
head;
int len =
0;
while(tmp !=
null){
tmp =
tmp.next;
len++;
}
return len;*/
return size;
}
//放元素进链表队列
public void offer(E e){
Node<E> node = new Node<E>(e);
if(isEmpty()){
head = node;
last = node;
}
enqueue(node);
}
//取出元素出链表队列
public E
poll(){
E e =
dequeue();
return e;
}
//获取链表队列头元素
public E
peek(){
if(isEmpty()){
return null;
}
return head.item;
}
public static void main(String[] args)
{
LinkedQueue<String> queue = new LinkedQueue<>();
queue.offer("a");
queue.offer("b");
queue.offer("c");
queue.offer("d");
System.out.println("head
=" + queue.head.item);
System.out.println("head.next
=" + queue.head.next.item);
System.out.println("last
=" + queue.last.item);
System.out.println("last.next
=" + queue.last.next.item);
System.out.println(queue.size());
System.out.println(queue.poll());
System.out.println(queue.size());
System.out.println(queue.poll());
System.out.println(queue.size());
System.out.println(queue.peek());
System.out.println(queue.size());
queue.offer("e");
System.out.println(queue.size());
System.out.println("head
=" + queue.head.item);
System.out.println("head.next
=" + queue.head.next.item);
System.out.println("last
=" + queue.last.item);
System.out.println("last.next
=" + queue.last.next.item);
}
}
闲来无事学习一下Queue相关知识,麻烦各位看看,有上面地方可以改进的~