CE 221 Data Structures and Algorithms Chapter 3: Lists, Stacks, and Queues - III Text: Read Weiss, §3.7 Izmir University of Economics
Izmir University of Economics The Queue ADT Like stacks, queues are lists. With a queue, however, insertion is done at one end, whereas deletion is performed at the other end. The basic operations on a queue (FIFO list) are enqueue, which inserts an element at the end of the list (called the rear), and dequeue, which deletes (and returns) the element at the start of the list (known as the front). Izmir University of Economics
Array Implementation of Queues - I As with stacks, both array and linked list (trivial) implementations give O(1) running times. Let’s discuss circular array implementation. An array to store elements, Array, and the positions Front and Rear to represent the ends of the queue are kept. We also keep track of the number of elements: Size. Izmir University of Economics
Array Implementation of Queues – Problem 5 2 7 1 Front Rear To enqueue an element X, increment Size and Rear and set Array[Rear]=X To dequeue an element, set the return value to Array[Front], decrement Size and then increment Front. Assume after several enqueue operations, the Rear is at the last index position. Assume also that some elements, in the meantime, have been dequeued to make up room. The next enqueue would fail, although there would be free slots. Izmir University of Economics
Array Implementation of Queues – Problem Solved The simple solution is whenever Front or Rear gets to the end of the Array, it is wrapped around to the beginning (hence the name circular array). initially 2 4 Front Rear After enqueue(1) 1 2 4 Front Rear After enqueue(3) 1 3 2 4 Front Rear Izmir University of Economics
Array Implementation of Queues – Example After dequeue 2 1 3 2 4 Front Rear After dequeue 4 1 3 2 4 Front Rear After dequeue 1 1 3 2 4 Front Rear After dequeue 3 and queue is empty 1 3 2 4 Front Rear If Size is not kept, queue is empty when Rear=Front-1. In that case, queue is full when there are Capacity-1 items. Why? Only Capacity different sizes can be differentiated and one of these is 0. Izmir University of Economics
Circular Array Implementation of Queues – Sample Code I public class SingleQueueArray<AnyType> { private int front; // points at the frontmost element private int rear; // points at the next vacant! position private int maxSize; // capacity of the underlying ArrayList private ArrayList<AnyType> elements; SingleQueueArray() { this(101); // actually holds one less than given size } SingleQueueArray(int s) { maxSize = s; front = 0; rear = 0; elements = new ArrayList<AnyType>(maxSize); boolean empty() { return front == rear; boolean full() { return (rear + 1) % maxSize == front; Izmir University of Economics
Circular Array Implementation of Queues – Sample Code II void enqueue(AnyType x) { if ( !full() ) { if (elements.size()<maxSize) //add until cells filled elements.add(x); else elements.set(rear, x); // set afterwards rear = (rear + 1) % maxSize; } AnyType dequeue() { AnyType temp=null; if ( !empty() ) { temp = elements.get(front); front = (front+1) % maxSize; return temp; Izmir University of Economics
Applications of Queues - I When jobs are submitted to a printer, they are arranged in order of arrival. Virtually every real-life line is (supposed to be) a queue. Users on other machines are given access to a file server on a first-come first-served basis. Calls to large companies are generally placed on a queue when all operators are busy. Izmir University of Economics
Applications of Queues - II A whole branch of mathematics, known as queueing theory, deals with computing, probabilistically, how long users expect to wait on a line, how long the line gets, and other such questions. The answer depends on how frequently users arrive to the line and how long it takes to process a user once the user is served. Both of these parameters are given as probability distribution functions. Izmir University of Economics
Izmir University of Economics Homework Assignments 3.35 You are requested to study and solve the exercises. Note that these are for you to practice only. You are not to deliver the results to me. Izmir University of Economics