Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

const int MAXPRIORITY = 10; template pqqueue::pqqueue() { // ADD YOUR LOGIC HERE

ID: 3671194 • Letter: C

Question

const int MAXPRIORITY = 10; template pqqueue::pqqueue() { // ADD YOUR LOGIC HERE // you need to allocate space for the vector // and initialize the number of elements for(int i = 0;i(); } pqsize = 0; }; template void pqqueue::push(const T& item) { // ADD YOUR LOGIC HERE // push item into queue priority[p] where p is derived somehow // or defaulted and increment priority queue size priority[MAXPRIORITY % 10].insert(item); pqsize += 1; }; how can I change (const int MAXPRIORITY = 10; ) to dynamic size

Explanation / Answer

Try this code to push and pop elements from the queue...................

#include <stdio.h>

#include <stdlib.h>

#define MAX 10

void insert_by_priority(int);

void delete_by_priority(int);

void create();

void check(int);

void display_pqueue();

int pri_que[MAX];

int front, rear;

void main()

{

    int n, ch;

    printf(" 1 - Insert an element into queue");

    printf(" 2 - Delete an element from queue");

    printf(" 3 - Display queue elements");

    printf(" 4 - Exit");

    create();

    while (1)

    {

        printf(" Enter your choice : ");   

        scanf("%d", &ch);

        switch (ch)

        {

        case 1:

            printf(" Enter value to be inserted : ");

            scanf("%d",&n);

            insert_by_priority(n);

            break;

        case 2:

            printf(" Enter value to delete : ");

            scanf("%d",&n);

            delete_by_priority(n);

            break;

        case 3:

            display_pqueue();

            break;

        case 4:

            exit(0);

        default:

          printf(" Choice is incorrect, Enter a correct choice");

        }

    }

}

/* Function to create an empty priority queue */

void create()

{

    front = rear = -1;

}

/* Function to insert value into priority queue */

void insert_by_priority(int data)

{

    if (rear >= MAX - 1)

    {

        printf(" Queue overflow no more elements can be inserted");

        return;

    }

    if ((front == -1) && (rear == -1))

    {

        front++;

        rear++;

        pri_que[rear] = data;

        return;

    }   

    else

        check(data);

    rear++;

}

/* Function to check priority and place element */

void check(int data)

{

    int i,j;

    for (i = 0; i <= rear; i++)

    {

        if (data >= pri_que[i])

        {

            for (j = rear + 1; j > i; j--)

            {

                pri_que[j] = pri_que[j - 1];

            }

            pri_que[i] = data;

            return;

        }

    }

    pri_que[i] = data;

}

/* Function to delete an element from queue */

void delete_by_priority(int data)

{

    int i;

    if ((front==-1) && (rear==-1))

    {

        printf(" Queue is empty no elements to delete");

        return;

    }

    for (i = 0; i <= rear; i++)

    {

        if (data == pri_que[i])

        {

            for (; i < rear; i++)

            {

                pri_que[i] = pri_que[i + 1];

            }

        pri_que[i] = -99;

        rear--;

        if (rear == -1)

            front = -1;

        return;

        }

    }

    printf(" %d not found in queue to delete", data);

}

/* Function to display queue elements */

void display_pqueue()

{

    if ((front == -1) && (rear == -1))

    {

        printf(" Queue is empty");

        return;

    }

    for (; front <= rear; front++)

    {

        printf(" %d ", pri_que[front]);

    }

    front = 0;