Skip to content

Instantly share code, notes, and snippets.

@AndrejJurkin
Created June 18, 2017 17:24
Show Gist options
  • Save AndrejJurkin/2b336f05314a226e1f9f7a54a27df282 to your computer and use it in GitHub Desktop.
Save AndrejJurkin/2b336f05314a226e1f9f7a54a27df282 to your computer and use it in GitHub Desktop.
Queue impl using linked list
public class Queue<T> {
private static class Node<T> {
private T data;
private Node<T> next;
public Node(T data) {
this.data = data;
}
}
public Node<T> firstNode;
public Node<T> lastNode;
public void add(T item) {
Node<T> newNode = new Node<>(item);
if (lastNode != null) {
lastNode.next = newNode;
}
lastNode = newNode;
if (firstNode == null) {
firstNode = lastNode;
}
}
public T remove() {
if (firstNode == null) {
return null;
}
T data = firstNode.data;
firstNode = firstNode.next;
if (firstNode == null) {
lastNode == null;
}
return data;
}
public T peek() {
if (firstNode == null) {
return null;
}
return firstNode.data;
}
public boolean isEmpty() {
return firstNode == null;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment