/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ #include #include #include "PQLL_Mahato.h" int peek(Node** head) { return (*head)->data; } //Removes the element with the //highest priority from the list void dequeue(Node** head) { Node* temp = *head; (*head) = (*head)->next; free(temp); } // function to check is list is empty int isEmpty(Node** head) { return (*head) == NULL; } Node* newNode(char d, int p) { Node* temp = (Node*)malloc(sizeof(Node)); temp->data = d; temp->priority = p; temp->next = NULL; return temp; } // Function to enqueue according to priority void enqueue (Node** head, char d, int p) { Node* start = (*head); // Create new Node Node* temp = newNode(d, p); // special case: The head of list has lesser // priority than new node. So insert new // node before head node and change head node. if ((*head)->priority > p) { // Insert New node before head temp->next = *head; (*head) = temp; } else { // Traverse the list and find a // position to insert a new node while (start->next != NULL && start->next->priority < p){ start = start->next; } // Either at the ends of the list // or at the required position temp->next = start->next; start->next = temp; } } /* * File: PQLL_Mahato.h * Author: Aaditya * * Created on April 7, 2020, 9:44 PM */ #ifndef PQLL_MAHATO_H #define PQLL_MAHATO_H #ifdef __cplusplus extern "C" { #endif ///Node typedef struct node { char data; /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /* * File: PQLLMain_Mahato.c * Author: Aaditya * * Created on April 8, 2020, 9:45 PM */ #include #include #include "PQLL_Mahato.h" int main(int argc, char** argv) { //create a new priority queue Node* pq = newNode('B' , 1); enqueue(&pq, 'C' , 2); enqueue(&pq, 'D' , 3); enqueue(&pq, 'A' , 0); while (!isEmpty(&pq)) { printf("%c ", peek(&pq)); dequeue(&pq); } printf("\n"); return (EXIT_SUCCESS); } //Lower values indicate higher priority int priority; struct node* next; } Node; int peek(Node** head); void dequeue(Node** head); .