Skip to content

Instantly share code, notes, and snippets.

@hrishikesh-mishra
Created March 14, 2017 12:28
Show Gist options
  • Save hrishikesh-mishra/5deb5f6c877bc8bd1edfad4e9ff6900d to your computer and use it in GitHub Desktop.
Save hrishikesh-mishra/5deb5f6c877bc8bd1edfad4e9ff6900d to your computer and use it in GitHub Desktop.
Linked Queue
package com.hrishikesh.narashima.ch5queue;
import com.hrishikesh.narashima.ch4stack.ListNode;
import java.util.Objects;
import java.util.StringJoiner;
/**
*
* Linked Queue
* Created by hrishikesh.mishra
*/
public class LinkedQueue<E> implements Queue<E> {
private ListNode<E> front;
private ListNode<E> rear;
private int size;
@Override
public void enQueue(E element) {
ListNode<E> node = new ListNode<E>(element);
if(Objects.isNull(rear))
rear = node;
else
rear.setNext(node);
size++;
}
@Override
public E deQueue() {
if(isEmpty())
throw new IllegalStateException("Queue is empty");
ListNode<E> node = front;
front = front.getNext();
node.setNext(null);
size--;
return node.getData();
}
@Override
public E front() {
if(isEmpty())
throw new IllegalArgumentException("Queue is empty");
return front.getData();
}
@Override
public int size() {
return size;
}
@Override
public boolean isEmpty() {
return (size == 0);
}
@Override
public String toString() {
StringJoiner joiner = new StringJoiner(", ", "[", "]");
ListNode<E> node = new ListNode<>();
while (!Objects.isNull(node)){
joiner.add(String.valueOf(node.getData()));
node = node.getNext();
}
return joiner.toString();
}
}
class LinkedQueueTest{
public static void main(String[] args) {
Queue<Integer> queue = new FixedSizeArrayQueue<Integer>(4);
queue.enQueue(1);
queue.enQueue(2);
queue.enQueue(3);
System.out.println("Queue after enqueue (1, 2, 3) : " + queue);
System.out.println("Queue after dequeue : " + queue.deQueue() + ", Queue: " + queue);
System.out.println("Queue after dequeue : " + queue.deQueue() + ", Queue: " + queue);
queue.enQueue(4);
queue.enQueue(5);
System.out.println("Queue after dequeue : " + queue.deQueue() + ", Queue: " + queue);
queue.enQueue(6);
System.out.println("Queue after dequeue : " + queue.deQueue() + ", Queue: " + queue);
System.out.println("Queue after dequeue : " + queue.deQueue() + ", Queue: " + queue);
System.out.println("Queue after dequeue : " + queue.deQueue() + ", Queue: " + queue);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment