priorityq.c
90 linesc
DOWNLOAD
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}