-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprio_q_ll.c
123 lines (117 loc) · 1.78 KB
/
prio_q_ll.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include<stdio.h>
#include<stdlib.h>
struct node
{
int priority;
int info;
struct node *link;
}*front=NULL,*rear=NULL;
void insert(int,int);
int del();
void display();
int isempty();
int main()
{
int choice,item,item_priority;
while(1)
{
printf("1.insert\n2.delete\n3.display\n4.quit\n");
printf("\n enter your choice:");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("input the item to be added to queue:");
scanf("%d",&item);
printf("enter its priority:");
scanf("%d",&item_priority);
insert(item,item_priority);
break;
case 2:
printf("\n deleted item is %d ",del());
break;
case 3:
display();
break;
case 4:
exit(1);
default:
printf("wrong choice");
}
}
}
void insert(int item,int item_priority)
{
struct node *p,*temp;
temp=(struct node *)malloc(sizeof(struct node));
temp->info=item;
temp->priority=item_priority;
if(rear==NULL)
{
rear=temp;
front=temp;
}
else if(item_priority<rear->priority)
{
temp->link=rear;
rear=temp;
}
else
{
p=rear;
while(p->link!=NULL&&p->link->priority<=item_priority)
{
p=p->link;
}
temp->link=p->link;
p->link=temp;
}
}
int del()
{
struct node *temp;
int item;
if(isempty())
{
printf("queue is underflow\n");
exit(1);
}
else
{
temp=front;
item=temp->info;
front =front->link;
free(temp);
}
return item;
}
int isempty()
{
if(front==NULL)
{
return 1;
}
else
{
return 0;
}
}
void display()
{
struct node *p;
p=front;
if(front==NULL)
{
printf("queue is empty\n");
}
else
{
printf("queue is \n");
printf("priority item\n");
while(p!=NULL)
{
printf("%3d%3d\n",p->priority,p->info);
p=p->link;
}
}
}