data structures using ptr startprintf("\ deleted item is% "ptr->data)start start->nextfree(ptr)return startvoid display(struct node *startstruct node *ptrptr startif(start =nullprintf("\nqueue is empty)else printf("\ priority queue is )while(ptr !nullprintf"\ % [priority=% ]"ptr->dataptr->priority )ptr=ptr->nextoutput *****main menu**** insert delete display exit enter your option enter the value and its priority enter the value and its priority enter your option priority queue is [priority [priority enter your option multiple queues when we implement queue using an arraythe size of the array must be known in advance if the queue is allocated less spacethen frequent overflow conditions will be encountered to deal with this problemthe code will have to be modified to reallocate more space for the array in case we allocate large amount of space for the queueit will result in sheer wastage of the memory thusthere lies tradeoff between the frequency of overflows and the space allocated so better solution to deal with this problem is to have multiple queues or to have more than one queue in the same array of sufficient size figure illustrates this concept in the figurean array queue[nis used to represent two queuesqueue and queue the value of is such that the combined size of both the queues will never exceed while operating on these queuesit is important to note one thing--queue - - - - will grow from left to rightwhereas queue will grow from right to left at the same time queue queue extending the concept to multiple queuesa queue figure multiple queues can also be used to represent number of queues in the same array that isif we have queue[ ] [ [ [ [ [ [ [ [ [ [ then each queue will be allocated an equal amount of space bounded by indices [iand [ithis is shown in fig figure multiple queues