diff --git a/LinkedQueue.java b/LinkedQueue.java new file mode 100644 index 0000000..8dc05ce --- /dev/null +++ b/LinkedQueue.java @@ -0,0 +1,56 @@ + +public class LinkedQueue implements Queue { + private LinearNode head = null; + private LinearNode tail = null; + private int size = 0; + + public void enqueue(T element) { + if (tail == null){ //O(1) + head = new LinearNode(element); + tail = head; + size++; + } + else if (head == tail){ //O(1) + head.setNext(new LinearNode(element)); + tail = head.getNext(); + size++; + } + else{ //O(1) + tail.setNext(new LinearNode(element)); + tail = tail.getNext(); + size++; + } + } + + public T dequeue() { + if (head == null){ //O(1) + return null; + } + else{ //O(1) + LinearNode temp = head; + head = head.getNext(); + size--; + return temp.getElement(); + } + } + + @Override + public T getFront() { //O(1) + if (head == null){ + return null; + } + else{ + return head.getElement(); + } + } + + @Override + public boolean isEmpty() { //O(1) + return (head == null); + } + + public int size() { //O(1) + return size; + } + +} diff --git a/LinkedQueue2.java b/LinkedQueue2.java new file mode 100644 index 0000000..41827d1 --- /dev/null +++ b/LinkedQueue2.java @@ -0,0 +1,66 @@ + +public class LinkedQueue2 implements Queue { + private DoubleLinkedNode head; + private DoubleLinkedNode tail; + private int size = 0; + //O(1) + public void enqueue(T element) { + if (head == null){ + head = new DoubleLinkedNode(element); + tail = head; + size++; + } + else if (head == tail){ + DoubleLinkedNode temp = new DoubleLinkedNode(element); + temp.setNext(head); + head = temp; + tail = head.getNext(); + tail.setPrev(head); + size++; + } + else{ + DoubleLinkedNode temp = new DoubleLinkedNode(element); + temp.setNext(head); + head = temp; + head.getNext().setPrev(head); + size++; + } + } + + //O(1) + public T dequeue() { + if (head == null){ + return null; + } + else if (head == tail){ + T temp = head.getElement(); + head = null; + tail = null; + size--; + return temp; + } + else{ + T temp = tail.getElement(); + tail = tail.getPrev(); + tail.setNext(null); + size--; + return temp; + } + } + + //O(1) + public T getFront() { + return tail.getElement(); + } + + //O(1) + public boolean isEmpty() { + return head == null; + } + + //O(1) + public int size() { + return size; + } + +} diff --git a/Queue.java b/Queue.java new file mode 100644 index 0000000..2a164c2 --- /dev/null +++ b/Queue.java @@ -0,0 +1,12 @@ + +public interface Queue { + public void enqueue(T element); + + public T dequeue(); + + public T getFront(); + + public boolean isEmpty(); + + public int size(); +}