Professional Documents
Culture Documents
Queue Code
Queue Code
import java.util.Stack;
System.out.println("Linked
System. .println("Linked Queue: ");
LinkedQueue<String> qu = new LinkedQueue<String>();
qu.enqueue("GB");
qu.enqueue("DE");
qu.enqueue("FR");
qu.enqueue("ES");
qu.printQueue();
System.out.println("queue.element():
System. .println("queue.element(): " + qu.element());
System.out.println("queue.dequeue():
System. .println("queue.dequeue(): " + qu.dequeue());
qu.printQueue();
System.out.println("queue.dequeue():
System. .println("queue.dequeue(): " + qu.dequeue());
qu.printQueue();
System.out.println("queue.enqueue(
System. .println("queue.enqueue(\"IE\"): ");
.println("queue.enqueue(
qu.enqueue("IE");
qu.printQueue();
System.out.println("queue.dequeue():
System. .println("queue.dequeue(): " + qu.dequeue());
qu.printQueue();
/* 3. Write displayQueue(Queue queue) method, which displays the items of a given queue
without emptying the queue. */
System.out.println("displays
System. .println("displays the items of a given queue without emptying the queue: ");
qu.displayQueue(qu);
System.out.println();
System. .println();
// reverse Queueu
System.out.println("Reverse
System. .println("Reverse Queue: " + qu.reverseQueue(qu));
System.out.println("Stack
System. .println("Stack queue: ");
StackQueue q = new StackQueue();
q.enQueue(1);
q.enQueue(2);
q.enQueue(3);
System.out.println(q.deQueue());
System. .println(q.deQueue());
System.out.println(q.deQueue());
System. .println(q.deQueue());
System.out.println(q.deQueue());
System. .println(q.deQueue());
System.out.println();
System. .println();
/* 1. Queues provide FIFO (First-in-first-out) access where the first item in the set is accessed first.
Regardless of the data structure we use to implement a queue, queues have two main
operations: enqueue() and dequeue() . The following code implement a queue using an array.
Apply and test the code.
*/
//Queue.java: is a queue implementation using generic parameterized type E
interface Queue<E> {
public E element();
public E dequeue();
public ArrayQueue() {
elements = (E[]) new Object[INITIAL_CAPACITY ];
}
public E element() {
if (size() == 0) {
throw new java.util.NoSuchElementException();
}
return elements[front];
}
public E dequeue() {
if (size() == 0) {
throw new java.util.NoSuchElementException();
}
E element = elements[front];
elements[front] = null;
// or front = (front +1) % elements.length;
++front;
if (front == back) { // queue is empty
front = back = 0;
}
if (front == elements.length) { // wrap
front = 0;
}
count--;
return element;
}
//////////////////////////////
/*Exercises
1. Using Linked list operations, write LinkedQueue class which implements the
previous Queue
interface using
a linked list. Note. Use the same QueueMain.java, just change the type of the
queue object. */
class LinkedQueue<E> implements Queue<E> {
/*2. Write displayQueue(Queue queue) method, which displays the items of a given queue
without emptying the queue. */
public void displayQueue(LinkedQueue
(LinkedQueue queue) {
LinkedQueue tempQueue = new LinkedQueue();
if (queue.isEmpty()) {
System.out.println("Queue
System. .println("Queue is empty!");
return;
}
while (!queue.isEmpty()) {
Object item = queue.dequeue();
System.out.print(item);
System. .print(item);
tempQueue.enqueue(item);
}
while (!tempQueue.isEmpty()) {
queue.enqueue(tempQueue.dequeue());
}
System.out.println();
System. .println();
}
/*
Challenge Question
1. Write Queue reverseQueue(Queue queue), a static method which returns a queue in which
the order of the elements is reversed. Write a suitable main() to test your code. */
public LinkedQueue reverseQueue(LinkedQueue
(LinkedQueue queue) {
Stack<Object> s = new Stack<Object>();
LinkedQueue tempQueue = new LinkedQueue();
if (queue.isEmpty()) {
System.out.println("Queue
System. .println("Queue is empty!");
return null;
}
while (!queue.isEmpty()) {
s.push(queue.dequeue());
}
while (!s.isEmpty()) {
tempQueue.enqueue(s.pop());
}
return tempQueue;
}
/////////////////////
public E dequeue() {
if (size == 0) {
throw new java.util.EmptyStackException();
}
E element = front.data;
lnkdQ.deleteFirst();
front = lnkdQ.head;
--size;
return element;
}