jueves, 11 de agosto de 2011

Cola Circular


Las colas lineales tienen un grave problema, como las extracciones sólo pueden realizarse por un extremo, puede llegar un momento en que el apuntador A sea igual al máximo número de elementos en la cola, siendo que al frente de la misma existan lugares vacíos, y al insertar un nuevo elemento nos mandará un error de overflow (cola llena).

Para solucionar el problema de desperdicio de memoria se implementaron las colas circulares, en las cuales existe un apuntador desde el último elemento al primero de la cola.

La representación gráfica de esta estructura es la siguiente:

La condición de vacío en este tipo de cola es que el apuntador F sea igual a cero. Las condiciones que debemos tener presentes al trabajar con este tipo de estructura son las siguientes:
  • Over flow, cuando se realice una inserción.
  • Under flow, cuando se requiera de una extracción en la cola.
  • Vacio

ALGORITMO DE INICIALIZACIÓN

        F < -- 0
        A<-- 0

ALGORITMO PARA INSERTAR

        Si (F+1=A) ó (F=1 y A=máximo) entonces
        mensaje (overflow)
        en caso contrario
        inicio
        si A=máximo entonces
        A<--1
        cola[A]<-- valor
        en caso contrario
        A <--A+1
        cola[A]<-- valor
        si F=0 entonces
        F <-- 1
        fin

ALGORITMO PARA EXTRAER
        Si F=0 entonces
        mensaje (underflow)
        en caso contrario
        x <-- cola[F]
        si F=A entonces
        F <-- 0
        A<-- 0
        en caso contrario
        si F=máximo entonces
        F <--1 en caso contrario F <-- F+1


No hay comentarios:

Publicar un comentario