Last active
December 29, 2016 01:09
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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