Question
For this assignment, you will write a multi-file C program to create and use a dynamic (array based) q ueue of float values. A queue
For this assignment, you will write a multi-file C program to create and use a dynamic (array based) queueof float values.
A queue is a container that can be defined in terms of an array where all adds are preformed at the end of the sequence of existing values, and all removes are preformed at the start of the sequence of existing values. An empty queue is one that has no existing values in the array at all. We use the notion of a tail of the queue to keep track of (at which index) a new value in the sequence is to be added. Hence, an empty queue is one in which tail = 0 and a full queue is one in which tail = capacity - 1
The difference with a dynamic queue is that adds never fail. After an add (que), if the queue is full you create a new array with twice the capacity of the current array, copy all the existing items to the new array, free the memory of the old array, and set the queue pointer to the new array. Similarly, after a remove (deque) from (a non-empty queue), if the queue is less than half full, then you shrink the array in half.
Requirements:
You must write queue.h and queue.c which declares and defines functions to:
Create an empty queue with an initial capacity of one.
Add (que) an item to the queue
Test to see if the queue is full at capacity
Grow the capacity of the queue to twice its current capacity
Test to see if the queue is empty
Remove / return (deque) an item from the queue
Test to see if the queue is less than half full
Shrink the capacity of the queue in half its current capacity
You must write main.c which tests your queue implementation completely
You must write an appropriate Makefile
Notes:
A queue is really three separate data items: a pointer to the array, a tail indicator, and a capacity.
The current size (number of items in the queue) can be deduced from the tail indicator
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started