
- 头结点删除元素,尾结点插入元素
- 由于没有dummyHead, 要注意链表为空的情况
package com.hoho.datastruture.queue;import com.hoho.datastruture.LinkedList.LinkedList;public class LinkedListQueue<E> implements Queue<E> { private class Node { public E e; public Node next; public Node(E e, Node next) { this.e = e; this.next = next; } public Node(E e) { this(e, null); } public Node() { this(null, null); } @Override public String toString() { return e.toString(); } } private Node head, tail; private int size; public LinkedListQueue() { this.head = null; this.tail = null; this.size = 0; } @Override public void enqueue(E e) { //尾部进队列 if (tail == null) { tail = new Node(e); head = tail; } else { tail.next = new Node(e); tail = tail.next; } size++; } @Override public E dequeue() { if (isEmpty()) { throw new IllegalArgumentException("队列为空,无法出队"); } Node retNode = head; head = head.next; retNode.next = null; if (head == null) { tail = null; } size--; return retNode.e; } @Override public E getFront() { if (isEmpty()) { throw new IllegalArgumentException("队列为空,无法出队"); } return head.e; } @Override public int getSize() { return size; } @Override public boolean isEmpty() { return size == 0; } @Override public String toString() { StringBuilder res = new StringBuilder(); res.append("Queue: front "); Node current = head; while (current != null) { res.append(current + " -> "); current = current.next; } res.append("NULL tail"); return res.toString(); }}