Colas
- Operaciones básicas:
insertar,quitarPrimeroyprimero. - Cada rutina debería ejecutarse en tiempo constante.
Tipo Colas
Sección titulada «Tipo Colas»tipo Cola = registro Cabeza_de_cola, Final_de_cola : 1..Tamaño_máximo_de_cola Tamaño_de_cola : 0..Tamaño_máximo_de_cola Vector_de_cola : vector [1..Tamaño_de_máximo_de_cola] de Tipo_de_elementofin registro#define TAMANO_MAXIMO_COLA 5typedef int tipo_elemento;
typedef struct { int cabeza, final, tamano; tipo_elemento vector[TAMANO_MAXIMO_COLA];} cola;Crear Cola ( C ) — O(1)
Sección titulada «Crear Cola ( C ) — O(1)»procedimiento Crear Cola ( C ) // O(1) C.Tamaño_de_cola := 0; C.Cabeza_de_cola := 1; C.Final_de_cola := Tamaño_de_máximo_de_colafin procedimientovoid crear_cola(cola *c) { c->tamano = 0; c->cabeza = 0; c->final = -1;}Cola Vacía ( C ) — O(1)
Sección titulada «Cola Vacía ( C ) — O(1)»función Cola_Vacía ( C ) : test // O(1) devolver C.Tamaño_de_cola = 0fin funciónint cola_vacia(cola c) { return (c.tamano == 0);}incrementar ( x ) (privado) — O(1)
Sección titulada «incrementar ( x ) (privado) — O(1)»procedimiento Incrementar ( x ) (* privado *) // O(1) si C.Tamaño_de_cola = Tamaño_de_máximo_de_cola entonces error Cola llena sino C.Tamaño_de_cola := C.Tamaño_de_cola + 1; incrementar(C.Final_de_cola); C.Vector_de_cola[C.Final_de_cola] := x;fin procedimientovoid incrementar(int *x) { /* privado */ if (++(*x) == TAMANO_MAXIMO_COLA) *x = 0;}Insertar en Cola ( x, C ) — O (1)
Sección titulada «Insertar en Cola ( x, C ) — O (1)»procedimiento Insertar_en_Cola ( x, C ) // O(1) si C.Tamaño_de_cola = Tamaño_de_máximo_de_cola entonces error Cola llena sino C.Tamaño_de_cola := C.Tamaño_de_cola + 1; incrementar(C.Final_de_cola); C.Vector_de_cola[C.Final_de_cola];fin procedimientovoid insertar(tipo_elemento x, cola *c) { if (c->tamano == TAMANO_MAXIMO_COLA) { printf("error: cola llena: %d\n", c->tamano); exit(EXIT_FAILURE); } c->tamano++; incrementar(&(c->final)); c->vector[c->final] = x;}Quitar Primero ( C ) — O(1)
Sección titulada «Quitar Primero ( C ) — O(1)»función Quitar_Primero ( C ) : Tipo_de_elemento // O(1) si Cola_Vacía ( C ) entonces error Cola vacía sino C.Tamaño_de_cola := C.Tamaño_de_cola - 1; x := C.Vector_de_cola[C.Cabeza_de_cola]; incrementar(C.Cabeza_de_cola); devolver xfin funcióntipo_elemento quitar_primero(cola *c) { tipo_elemento x; if (cola_vacia(*c)) { printf("error: cola vacia\n"); exit(EXIT_FAILURE); } c->tamano--; x = c->vector[c->cabeza]; incrementar(&(c->cabeza)); return x;}Primero ( C ) — O(1)
Sección titulada «Primero ( C ) — O(1)»función Primero ( C ) : Tipo_de_elemento // O(1) si Cola_Vacía ( C ) entonces error Cola vacía sino devolver C.Vector_de_cola[C.Cabeza_de_cola]fin funcióntipo_elemento primero(cola c) { if (cola_vacia(c)) { printf("error: cola vacia\n"); exit(EXIT_FAILURE); } return (c.vector[c.cabeza]);} Pablo Portas López © 2025 licensed under CC BY 4.0