Problem:
Write a program that implements an LinkedQueue in java.
Output:
Not available.
Solution:
01 | public class LinkedQueue<E> implements Queue<E> { |
02 | private Node<E> head = new Node<E>(); // dummy node |
03 | private int size; |
04 |
05 | public void add(E element) { |
06 | head.prev = head.prev.next = new Node<E>(element, head.prev, head); |
07 | ++size; |
08 | } |
09 |
10 | public E element() { |
11 | if (size == 0 ) { |
12 | throw new java.util.EmptyStackException(); |
13 | } |
14 | return head.next.element; // front of queue // next <--> prev |
15 | } |
16 | public boolean isEmpty() { |
17 | return (size == 0 ); |
18 | } |
19 |
20 | public E remove() { |
21 | if (size == 0 ) { |
22 | throw new java.util.EmptyStackException(); |
23 | } |
24 | E element = head.next.element; // next <--> prev |
25 | head.next = head.next.next; // next <--> prev |
26 | head.next.prev = head; // next <--> prev |
27 | --size; |
28 | return element; |
29 | } |
30 | public int size() { |
31 | return size; |
32 | } |
33 | private static class Node<E> { |
34 | E element; |
35 | Node<E> prev; |
36 | Node<E> next; |
37 | Node() { |
38 | this .prev = this .next = this ; |
39 | } |
40 | Node(E element, Node<E> prev, Node<E> next) { |
41 | this .element = element; |
42 | this .prev = prev; |
43 | this .next = next; |
44 | } |
45 | } |
46 | } |
No comments :
Post a Comment