Skip to content

Instantly share code, notes, and snippets.

@RamonLopezEscudero
Last active December 29, 2016 01:09
Show Gist options
  • Save RamonLopezEscudero/e513dbfb9d17609db52385bdd9142827 to your computer and use it in GitHub Desktop.
Save RamonLopezEscudero/e513dbfb9d17609db52385bdd9142827 to your computer and use it in GitHub Desktop.
Colas de prioridad en lenguaje C. Se toma como valor "nulo" al entero negativo -1, esto puede modificarse sin alterar el funcionamiento del programa.
#include <stdio.h>
#include <stdlib.h>
int i, size_queue = 5;
void queue_overflow()
{
printf("Overflow!");
exit(0);
}
void queue_underflow()
{
printf("Underflow!");
exit(0);
}
void print_queue(int *queue)
{
for (i = 0; i < size_queue; i++)
{
if (*(queue + i) == -1) printf(" Nil ");
else printf(" %i ", *(queue + i));
}
}
void enqueue(int *queue, int *tail, int val)
{
*tail = *tail + 1;
if (*tail > size_queue) *tail = 1;
if (*(queue + (*tail - 1)) == -1) *(queue + (*tail - 1)) = val;
else queue_overflow();
}
void dequeue(int *queue, int *head)
{
if (*(queue + *head) == -1) queue_underflow();
*(queue + *head) = -1;
*head = *head + 1;
if (*head > size_queue) *head = 0;
}
void main()
{
int queue[size_queue + 1], head, tail;
for (i = 0; i < size_queue; i++) *(queue + i) = -1;
head = 0;
tail = 0;
enqueue(queue, &tail, 5);
enqueue(queue, &tail, 6);
enqueue(queue, &tail, 8);
enqueue(queue, &tail, 4);
enqueue(queue, &tail, 2);
dequeue(queue, &head);
dequeue(queue, &head);
enqueue(queue, &tail, 5);
//enqueue(queue, &tail, 6);
print_queue(queue);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment