Citigroup Interview Question
AnalystsCountry: United States
Java implementation of Queue using Linked List:
public class Queue {
// inner class for Node
private class Node {
private int item;
private Node next;
}
private int N; // number of elements in queue
private Node first;
private Node last;
public Queue() {
first = null;
last = null;
N = 0;
}
// check if queue is empty
public boolean isEmpty() {
return first == null;
}
// return the number of elements in queue
public int size() {
return N;
}
// return the first element of queue without removing it from queue
public int peek() {
if (isEmpty())
throw new RuntimeException("Queue underflow");
return first.item;
}
// add an element to queue
public void enqueue(int item) {
Node oldlast = last;
last = new Node();
last.item = item;
last.next = null;
if (isEmpty())
first = last;
else
oldlast.next = last;
N++;
}
// remove the first element
public int dequeue() {
if (isEmpty())
throw new RuntimeException("Queue underflow");
int item = first.item;
first = first.next;
N--;
if (isEmpty())
last = null; // to avoid loitering
return item;
}
// string representation of Queue
public String toString() {
StringBuilder s = new StringBuilder();
Node n = first;
while (n != null) {
s.append(n.item + " ");
n = n.next;
}
return s.toString();
}
/**
* A test client.
*/
public static void main(String[] args) {
Queue q = new Queue();
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
q.enqueue(4);
q.enqueue(5);
System.out.println(q);
q.dequeue();
q.dequeue();
System.out.println(q);
}
}
FIFO implementation. You can use an array (and re-size them if it is full) or Linked list to keep adding to the tail, provide elements from head.
- howaboutthis March 27, 2012