Priority Queue

Program to implement Priority queue in C

 

#include<stdio.h>
#include<malloc.h>
void insert();
void del();
void display();
 
struct node
    {
        int priority;
        int info;
 
        struct node *next;
    }*start, *q, *temp, *new;
 
typedef struct node *N;
int main()
{
    int ch;
 
    do
        {
            printf( "\n[1] INSERTION\t[2] DELETION\t[3] DISPLAY [4] EXIT\t:" );
            scanf( "%d", &ch );
 
            switch ( ch )
                {
 
                case 1:
                    insert();
                    break;
 
                case 2:
                    del();
                    break;
 
                case 3:
                    display();
                    break;
 
                case 4:
                    break;
                }
        }
    while ( ch < 4 );
}
 
void insert()
{
    int item, itprio;
    new = ( N* ) malloc( sizeof( N ) );
    printf( "ENTER THE ELT.TO BE INSERTED :\t" );
    scanf( "%d", &item );
    printf( "ENTER ITS PRIORITY :\t" );
    scanf( "%d", &itprio );
    new->info = item;
    new->priority = itprio;
 
    if ( start == NULL || itprio < start->priority )
        {
            new->next = start;
            start = new;
        }
    else
        {
            q = start;
 
            while ( q->next != NULL && q->next->priority <= itprio )
                q = q->next;
 
            new->next = q->next;
 
            q->next = new;
        }
}
 
void del()
{
    if ( start == NULL )
        {
            printf( "\nQUEUE UNDERFLOW\n" );
 
        }
    else
        {
            new = start;
            printf( "\nDELETED ITEM IS %d\n", new->info );
            start = start->next;
            free( start );
        }
}
 
void display()
{
    temp = start;
 
    if ( start == NULL )
        printf( "QUEUE IS EMPTY\n" );
    else
        {
            printf( "QUEUE IS:\n" );
 
            while ( temp != NULL )
                {
                    printf( "\t%d[priority=%d]", temp->info, temp->priority );
                    temp = temp->next;
                }
        }
}
VN:F [1.9.22_1171]
Rating: 7.0/10 (49 votes cast)
VN:F [1.9.22_1171]
Rating: +12 (from 20 votes)
Priority Queue, 7.0 out of 10 based on 49 ratings

18. August 2009 by Jishnu
Categories: C Programming | Tags: | 2 comments

Comments (2)

  1. free(start)? Why?

  2. free(new) should be done

Leave a Reply