|
|
|
Colas estáticas
|
||||||||||||||||||||||
|
Podemos representar las colas mediante arrays.
Representación mediante un array o lista enlazada const Max= <expresión> // longitud máxima Declaración Tipo registro:tipo_elemento fin_registro arrays [1..Max] de tipo_elemento:arr var entero:frente, final arr: c // la cola se define como un array tipo_elemento:elemento Procedimiento Inicializar (S entero:frente,final) inicio frente «-- 0 final « -- 0 fin_procedimiento El procedimiento para la inserción de un nuevo elemento deberá verificar, en primer lugar, que la cola no esta totalmente llena y, por consiguiente, no se producirá error de desbordamiento. Esto se produce cuando final=Max. La representación se puede expresar:
Colas mediante arrays Procedimiento meter (E/S entero: final; S entero:frente; E/S arr:c; E tipo_elemento :elemento) inicio Si final=0 entonces frente «-- 1 fin_si final «-- final + 1 c[final] «-- elemento fin_procedimiento Para eliminar un elemento será preciso verificar, en primer lugar, que la cola no está vacía.
Quitar o sacar Procedimiento Sacar (E/S entero: frente,final; E arr:cl; S tipo_elemento:elemento) inicio elemento«-- c[frente] frente «-- frente+1 si frente = final+ 1 entonces frentei «-- 0 final «-- 0 fin_si fin_procedimiento Nota: la cola estara vacia cuando frente =0 Vacia o ColaVacia lógico funcion vacia (E entero:frente) inicio devolver (frente=0 ) fin_función Nota. Esta implementación tiene el inconveniente de que puede ocurrir que la variable final llegue al valor máximo de la tabla, con lo cual no se pueda seguir añadiendo elementos a la cola, aunque queden posiciones libres. Existen diversas soluciones a este problema: 1º Retroceso Consiste en mantener fijo a 1 el valor de frente, realizando un desplazamiento de una posición para todas las componentes ocupadas cada vez que se efectúa una supresión. 2º Reestructuración. Cuando final llega al maximo de elementos se desplazan las componentes ocupadas hacia atras las posiciones para que el principio coincida con el principio de la tabla. 3º Mediante un array circular Un arrays circular es aquel en el que se considera que la componente primera sigue a la componente última. Esta implementación obliga a dejar siempre una posición libre para separar el principio y el final del array.
Llega al valor maximo de la tabla no se puede seguir añadiendo elemento
|
|
Elaborado por ; Dinora
Soto Castillo,. |