Yahoo Interview Question
Software Engineer / DevelopersTeam: Ad
Country: United States
Interview Type: In-Person
we can use Doubly or singly Linked List
keep a tail pointer and a head pointer
public class Queue<T> {
private static class Node {
Node previous;
Node next;
T value;
public Node(T value, Node next, Node previous) {
this.value = value;
this.next = next;
this.previous = previous;
}
}
private head = null;
private tail = null;
private int size = 0;
private int maxSize = 0;
public Queue(int size) {
this.maxSize = size;
}
public void insert(T value) {
if (head == null) {
head = new Node(value, null, null);
tail = head;
size += 1;
} else {
if (this.size == this.maxSize) {
throw new Exception("Queue is full");
}
Node tempNode = new Node(value, head, null);
head.previous = tempNode;
head = tempNode;
size += 1;
}
}
public T pop() {
if (this.size < 1) {
throw new Exception("Queue is empty");
} else if (size == 1) {
T value = head.value;
head = null;
tail = null;
size = 0;
return value;
}
Node tempNode = tail;
tail.previous.next = null;
tail = tempNode.previous;
size -= 1;
return tempNode.value;
}
}
Just create your own singly linked list w/ the appropriate (FIFO) pointer?
- $wizzl3 March 20, 2014