The source code of basic priority queue is given :
#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;
}
}
}
Comments
Post a Comment