Priority Queue With Linked List

/*
* 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 <stdio.h>
#include <stdlib.h>
#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 <stdio.h>
#include <stdlib.h>
#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);
   void enqueue(Node** head, char d, int p);
   int isEmpty(Node** head);
   Node* newNode(char d, int p);
   

#ifdef __cplusplus
}
#endif

#endif /* PQLL_MAHATO_H */

Need your ASSIGNMENT done? Use our paper writing service to score better and meet your deadline.


Click Here to Make an Order Click Here to Hire a Writer