Concept explainers
Explanation of Solution
The given program is used to implement stack using linked list.
Logical error:
Logical error is a mistake in a program’s source code that leads to produce an incorrect output. This error is a type of run time error, as it cannot be identified during the compilation of the program. This is a logical mistakes created by the programmer and it is determined when the program produces wrong output.
Error #1:
The “dequeue()” function should remove from the front end, not from the rear end.
Correct statement:
//assigning value of at the front to a variable val.
int val=q[front];
/*removing value at front by incrementing the value of front by one*/
front++;
Error #2:
The statement used to wrap the indices “front” and “rear” to “0” is missing. It should be done for saving the memory when the “dequeue()” method is popped all the elements.
Correct statement:
/*checking whether value of front is equal to length of the queue*/
if(front == q.length)
//set front to 0
front=0;
Corrected code:
//An array implementation of a queue
int dequeue()
{
//checking whether the queue is empty
if (empty())
/*throws an exception EmptyQueueException indicating that there is no elements available to remove...
Want to see the full answer?
Check out a sample textbook solutionChapter 20 Solutions
Starting Out with Java: From Control Structures through Data Structures (4th Edition) (What's New in Computer Science)
- /*** CircularArrayQueue represents an array implementation of a queue in * which the indexes for the front and rear of the queue circle back to 0* when they reach the end of the array.* * @author ITSC2214* @version 4.0*/public class CircularArrayQueue<T> implements QueueADT<T>{private final static int DEFAULT_CAPACITY = 100;private int front, rear, count;private T[] queue; /*** Creates an empty queue using the specified capacity.* @param initialCapacity the initial size of the circular array queue*/public CircularArrayQueue (int initialCapacity){front = rear = count = 0;queue = (T[]) (new Object[initialCapacity]);}/*** Creates an empty queue using the default capacity.*/public CircularArrayQueue(){this(DEFAULT_CAPACITY);} /*** Adds the specified element to the rear of this queue, expanding* the capacity of the queue array if necessary.* @param element the element to add to the rear of the queue*/public void enqueue(T element){if (size() == queue.length)…arrow_forwardFind the error in each of the following code segments // A linked implementation of a queue int dequeue() { if(empty()) throw new EmptyQueueException(); int value = front.value; front ++; return value; }arrow_forwardWhat is the main advantage of implementing a queue using a linked list rather than an array?arrow_forward
- Implement a method concatenate in class LinkedQueue. This method should take all the elements of a queue sourceQ and append them to the end of another queue targetQ. The operation should result in sourceQ being an empty queue. Test this method in the main method of LinkedQueue. package queues;public class LinkedQueue<E> implements Queue<E> { private SinglyLinkedList<E> list = new SinglyLinkedList<>(); // an empty list public LinkedQueue() { } // new queue relies on the initially empty list @Override public int size() { return list.size(); } @Override public boolean isEmpty() { return list.isEmpty(); } @Override public void enqueue(E element) { list.addLast(element); } @Override public E first() { return list.first(); } @Override public E dequeue() { return list.removeFirst(); } public String toString() { return list.toString(); }}arrow_forwardQueue example – make this generic, instead of a Queue of Customer. public class Queue { private ArrayList<Customer> line; public Queue() { line = null; } public void enqueue (Customer c) { Customer newc = new Customer (c); // copy constructor plateful.add(newc); } public Customer dequeue (Customer c) { Customer newc = line.get(0); plateful.remove(0); return newc; } } // end of class definitionarrow_forwardWhat's the point of constructing this cumbersome circular array stack? For some reason, a circular array is the only viable option for implementing queues.arrow_forward
- An ordinary queue implemented using an array of size CAPACITY gets full when: a. Front = (rear + 1) mod CAPACITY b. Rear = front c. Front = rear + 1 d. Rear = CAPACITY –arrow_forwardThe implementation of a queue in an array, as given in this chapter, uses the variable count to determine whether the queue is empty or full. You can also use the variable count to return the number of elements in the queue. On the other hand, class linkedQueueType does not use such a variable to keep track of the number of elements in the queue. Redefine the class linkedQueueType by adding the variable count to keep track of the number of elements in the queue. Modify the definitions of the functions addQueue and deleteQueue as necessary. Add the function queueCount to return the number of elements in the queue. Also, write a program to test various operations of the class you defined.arrow_forwardImplement a function void reverseQueue(QueueSLL&) that reverses the elements of a parameter queue. The function uses a stack for the reverse.arrow_forward
- A tail recursion is a type of recursion in which the access of the tail pointer of a linked list is recursive a) true b)falsearrow_forwardALL TRUE OR FALSE QUESTIONS 1. A "deque" allows an application to enqueue and dequeue from both front and rear of a queue. 2. The Queue ADT of the text is defined to hold elements of type Objec 3. Java supports inheritance of interfaces. 4. The text's array-based queue implementations use the fixed-front approach. 5. If N represents the number of elements in the queue, then the dequeue method of the ArrayBoundedQueue class is O(1). 6. When an object of class LinkedQueue represents an empty queue, its rear variable is 0. 7. A standard linked list provides a good implementation of a "Deque". 8. When implementing a queue with a linked list, the front of the queue is also the front of the linked list. 9. Our LinkedQueue class implements the QueueInterface interface. 10. The text's array-based queue implementations use the floating-front approach.arrow_forwardAn array of size MAX_SIZE is used to implement a queue. head, tail, and size are tracked. Suppose front is 0 and rear is MAX_SIZE -1. How many elements are present in the queue? a. 0 b. MAX_SIZE-1 c. MAX_SIZE d. 1arrow_forward
- C++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage Learning