CMPS 223 Data Structures and Algorithms Dynamic Circula Array Based Implementations of List, Stack, FIFO Queue, and Sorted Queue I. Implementation of the List template-class, The List template-class must be implemented with the following features 1. It must be circular, dynamic array based. 2. The emements of the dynamic array are the pointers to T type objcts. That is to say, the data member of list must be: int head, tail, count; T * * elmement; (Yes, element[i] will be pionter to T. Why do we do that?) II. Implementations of Stack FIFO Queue and Sorted Queue templated classes. The major functions of Queue(FIFO and Sorted) are enque( const T * ), dequeue( const T *). All the functions which take T objects, should be change to T* type objects. III. Write a driver program that displays the following prompt: 1. Add one set of 10 objects of type you decided into each of the 4 different structures: list, stack, FIFO queue and sorted queue. 2. Display the following prompt "Enter A, D, L, S, F, Q, E : ? 3. For each selctin above, performs the following A: Ask for a value into the same value's address into list: at the random place. stack: on the top fifo queue: the end of queue. sorted queue: proper place to make the queue sorted D: Remove an item from each of 4 structures, and display the item removed. The item moved from structures are list: at the random position stack: the top one FIFO queue: front one. Sorted queue: The same one removed from FIFO queue. (Remember don't use delete since each of dynammically created objects are pointed by 4 different pionters.) L: List the list items from 1st one to the last one. S: List thestack items from top to the bottom. F: List the queue items from front to rear. Q: List the sorted queue item from the head to tail. (One display or a friend operator<< defined in List should do the all 4 different listings.) IV. Remarks: 1. Only one set of objects are created (newed?) are the very beginning, are piointed by each of 4 different data structures. Yes, each object will be pointed by 4 different pointers, one in each data structures. 2. Don't try to use delete element[k] since deleting element[i] from one data structure will make it unavailable from other 3 data structures.