Advertisement
Guest User

Untitled

a guest
Mar 1st, 2018
474
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.05 KB | None | 0 0
  1.     #include "linkedListArray.h"
  2.  
  3.     void Create(Node **queue)
  4.     {
  5.         for (int i = 0; i < MAXPRI; i++) {
  6.             queue[i] = NULL;
  7.         }
  8.     }
  9.  
  10.     void Push(Node **queue, int pri, int id)
  11.     {
  12.         Node *new_node = malloc(sizeof(Node));
  13.         if (new_node != NULL) {
  14.             new_node->id = id;
  15.             new_node->next = NULL;
  16.             if (queue[pri] == NULL) {
  17.                 queue[pri] = new_node;
  18.             }
  19.             else {
  20.                 Node *aux = queue[pri];
  21.                 while (aux->next != NULL) {
  22.                     aux = aux->next;
  23.                 }
  24.                 aux->next = new_node;
  25.             }
  26.         }
  27.     }
  28.  
  29.     void Execute(Node **queue)
  30.     {
  31.         bool end = false;
  32.         int i = 0;
  33.  
  34.         while (!end && i < MAXPRI) {
  35.             if (queue[i] != NULL) {
  36.                 Node *aux = queue[i];
  37.                 queue[i] = queue[i]->next;
  38.                 free(aux);
  39.                 end = true;
  40.             }
  41.             i++;
  42.         }
  43.         if (!end) {
  44.             printf("There are no processes\n");
  45.         }
  46.     }
  47.  
  48.     int Search(Node **queue, unsigned int id)
  49.     {
  50.         int pri = -1;
  51.         Node *aux;
  52.  
  53.         for (int i = 0; i < MAXPRI  &&  pri == -1; ++i) {
  54.             aux = queue[i];
  55.             while (aux != NULL  &&  pri == -1) {
  56.                 if (aux->id == id) {
  57.                     pri = i;
  58.                 }
  59.                 else
  60.                     aux = aux->next;
  61.             }
  62.         }
  63.         return pri;
  64.     }
  65.  
  66.     void Output(Node *head)
  67.     {
  68.         for (Node *current = head; current != NULL; current = current->next) {
  69.             if (current->next != NULL)
  70.                 printf ("%d -> ", current->id);
  71.             else
  72.                 printf ("%d", current->id);
  73.         }
  74.     }
  75.  
  76.     void Display(Node **queue)
  77.     {
  78.         for (int i = 0; i < MAXPRI; i++) {
  79.             printf ("Priority queue %d: ", i);
  80.             Output(queue[i]);
  81.             putchar('\n');
  82.         }
  83.         putchar('\n');
  84.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement