1// Aim: Program to perform Priority Queue operations (Insertion, Deletion).
2#include <stdio.h>
3
4int s, f, r;
5struct pq {
6 int item;
7 int priority;
8} a[20];
9
10void enqueue(int item, int priority) {
11 int loc, i;
12 if (f == 0 && r == s - 1) {
13 printf("Queue is full\n");
14 } else if (f == -1 && r == -1) {
15 f = r = 0;
16 a[r].item = item;
17 a[r].priority = priority;
18 } else {
19 if (r == s - 1) {
20 for (i = f; i <= r; i++) {
21 a[i - 1] = a[i];
22 }
23 r--;
24 f--;
25 }
26 for (i = r; i >= f; i--) {
27 if (a[i].priority < priority) {
28 break;
29 }
30 }
31 loc = i + 1;
32 for (i = r; i >= loc; i--) {
33 a[i + 1] = a[i];
34 }
35 a[loc].item = item;
36 a[loc].priority = priority;
37 r++;
38 }
39}
40
41void dequeue() {
42 if (f == -1 && r == -1) {
43 printf("Queue is empty\n");
44 } else if (f == r) {
45 printf("Deleted item is %d\n", a[f].item);
46 f = r = -1;
47 } else {
48 printf("Deleted item is %d\n", a[f].item);
49 f++;
50 }
51}
52
53void display() {
54 if (f == -1 && r == -1) {
55 printf("Queue is empty\n");
56 } else {
57 for (int i = f; i <= r; i++) {
58 printf("Item: %d, Priority: %d\n", a[i].item, a[i].priority);
59 }
60 }
61}
62
63void main() {
64 int ch, item, priority;
65 printf("Enter the size of the queue\n");
66 scanf("%d", &s);
67 f = r = -1;
68 do {
69 printf("1.Enqueue\n2.Dequeue\n3.Display\n4.Exit\n");
70 printf("Enter your choice\n");
71 scanf("%d", &ch);
72 switch (ch) {
73 case 1:
74 printf("Enter the item and priority\n");
75 scanf("%d%d", &item, &priority);
76 enqueue(item, priority);
77 break;
78 case 2:
79 dequeue();
80 break;
81 case 3:
82 display();
83 break;
84 case 4:
85 break;
86 default:
87 printf("Invalid choice\n");
88 }
89 } while (ch != 4);
90}