package DataStructures;import java.util.NoSuchElementException;public class LinkedQueue {class Node {int data;Node next;public Node() {this(0);}public Node(int data) {this(data, null);}public Node(int data, Node next) {this.data = data;this.next = next;}}/*** Front of Queue*/private Node front;/*** Rear of Queue*/private Node rear;/*** Size of Queue*/private int size;/*** Init LinkedQueue*/public LinkedQueue() {front = rear = new Node();}/*** Check if queue is empty** @return <tt>true</tt> if queue is empty, otherwise <tt>false</tt>*/public boolean isEmpty() {return size == 0;}/*** Add element to rear of queue** @param data insert value* @return <tt>true</tt> if add successfully*/public boolean enqueue(int data) {Node newNode = new Node(data);rear.next = newNode;rear = newNode; /* make rear point at last node */size++;return true;}/*** Remove element at the front of queue** @return element at the front of queue*/public int dequeue() {if (isEmpty()) {throw new NoSuchElementException("queue is empty");}Node destroy = front.next;int retValue = destroy.data;front.next = front.next.next;destroy = null; /* clear let GC do it's work */size--;if (isEmpty()) {front = rear;}return retValue;}/*** Peek element at the front of queue without removing** @return element at the front*/public int peekFront() {if (isEmpty()) {throw new NoSuchElementException("queue is empty");}return front.next.data;}/*** Peek element at the rear of queue without removing** @return element at the front*/public int peekRear() {if (isEmpty()) {throw new NoSuchElementException("queue is empty");}return rear.data;}/*** Return size of queue** @return size of queue*/public int size() {return size;}/*** Clear all nodes in queue*/public void clear() {while (!isEmpty()) {dequeue();}}@Overridepublic String toString() {if (isEmpty()) {return "[]";}StringBuilder builder = new StringBuilder();Node cur = front.next;builder.append("[");while (cur != null) {builder.append(cur.data).append(", ");cur = cur.next;}builder.replace(builder.length() - 2, builder.length(), "]");return builder.toString();}/* Driver Code */public static void main(String[] args) {LinkedQueue queue = new LinkedQueue();assert queue.isEmpty();queue.enqueue(1); /* 1 */queue.enqueue(2); /* 1 2 */queue.enqueue(3); /* 1 2 3 */System.out.println(queue); /* [1, 2, 3] */assert queue.size() == 3;assert queue.dequeue() == 1;assert queue.peekFront() == 2;assert queue.peekRear() == 3;queue.clear();assert queue.isEmpty();System.out.println(queue); /* [] */}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。