Cola circular

Cola circular

Una cola circular o anillo es una estructura de datos en la que los elementos están de forma circular y cada elemento tiene un sucesor y un predecesor. Los elementos pueden cosultarse, añadirse y eliminarse unicamente desde la cabeza del anillo que es una posición distinguida. Existen dos operaciones de rotaciones, una en cada sentido, de manera que la cabeza del anillo pasa a ser el elemento sucesor, o el predecesor, respectivamente, de la cabeza actual.

Anillo en Maude

fmod ANILLO {X :: TRIV} is
        sorts AnilloNV{X} Anillo{X} .
        subsort AnilloNV{X} < Anillo{X} .

        op crear : -> Anillo{X} [ctor] .
        op insertar : X$Elt Anillo{X} -> AnilloNV {X} [ctor] .

        op eliminar : Anillo{X} -> Anillo{X} .
        ops rotarDch rotarIzq : Anillo{X} -> Anillo{X} .
        op cabeza : AnilloNV{X} -> X$Elt .
        op esVacio? : Anillo{X} -> Bool .
        op aLaCola : X$Elt Anillo{X} -> Anillo{X} .
        op elimCola : Anillo{X} -> Anillo{X} .
        op cola : AnilloNV {X} -> X$Elt .

        var A : Anillo{X} .
        vars E E2 : X$Elt .

        eq eliminar(crear) = crear .
        eq eliminar(insertar(E, A)) = A .

        eq cabeza(insertar(E, A)) = E .

        eq esVacio?(crear) = true .
        eq esVacio?(insertar(E, A)) = false .

        eq cola(insertar(E, crear)) = E .
        eq cola(insertar(E, insertar(E2, A))) = cola(insertar(E2, A)) .

        eq elimCola(crear) = crear .
        eq elimCola(insertar(E, crear)) = crear .
        eq elimCola(insertar(E, insertar(E2, A))) = insertar(E, elimCola(insertar(E2, A))) .

        eq aLaCola(E, crear) = insertar(E, crear) .
        eq aLaCola(E, insertar(E2, A)) = insertar(E2, aLaCola(E, A)) .

        eq rotarDch(crear) = crear .
        eq rotarDch(insertar(E, A)) = aLaCola(E, A) .

        eq rotarIzq(crear) = crear .
        eq rotarIzq(insertar(E, A)) = insertar(cola(insertar(E, A)), elimCola(insertar(E, A))) .
endfm

Anillo en Pseudolenguaje

FUNC CrearCola() : TCola
VARIABLES
cola: TCola
INICIO
        cola.frente <- MAXCOLA
        cola.final <- MAXCOLA
        RESULTADO <- cola
FIN

PROC DestruirCola(&cola: TCola)
INICIO
//No hay q hacer nada
FIN

FUNC ColaLlena(cola: TCola): LÓGICO
INICIO
        RESULTADO <- (cola.final MOD MAXCOLA) + 1 = cola.frente
FIN

FUNC ColaVacia(cola: TCola): LÓGICO
INICIO
        RESULTADO <- cola.final = cola.frente
FIN


PROC MeterCola (&cola: TCola; &e: Telemento; &error: Terror)
VARIABLES
fin: NATURAL
INICIO
        SI ColaLlena(cola) ENTONCES
                error <- ErrorColaLlena
        EN OTRO CASO
                error <- NoError
                fin <- (cola.final MOD MAXCOLA) + 1
                cola.final <- fin
                cola.elementos[fin] <- e
        FINSI
FIN

PROC SacarCola (&cola: TCola; &e: Telemento; &error: Terror)
VARIABLES
        ini: NATURAL
INICIO
        SI ColaVacia(cola) ENTONCES
                error <- ErrorColaLlena
        EN OTRO CASO
                error <- NoError
                ini <- (cola.frente MOD MAXCOLA) + 1
                cola.frente <- ini
                e <- cola.elementos[ini]
        FINSI
FIN

Véase también

  • Cola (estructura de datos)
  • Cola de prioridad (estructura de datos)
  • Bicola

Wikimedia foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Mira otros diccionarios:

  • Circular — puede referirse a: Relativo al círculo. Documento preparado para comunicar un mensaje idéntico a un grupo (círculo) de personas o al público en general. En geometría y otras ramas de matemática: Sector circular. Segmento circular. Corona circular …   Wikipedia Español

  • Cola (informática) — Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO (del inglés …   Wikipedia Español

  • Cola doblemente terminada — Una cola doblemente terminada o deque (del inglés double ended queue) es una estructura de datos lineal que permite insertar y eliminar elementos por ambos extremos, podría verse como un mecanismo que permite aunar en una única estructura las… …   Wikipedia Español

  • First in, first out — o FIFO (en español primero en entrar, primero en salir ), es un concepto utilizado en estructuras de datos, contabilidad de costes y teoría de colas. Guarda analogía con las personas que esperan en una cola y van siendo atendidas en el orden en… …   Wikipedia Español

  • FIFO — Saltar a navegación, búsqueda FIFO es el acrónimo inglés de First In, First Out (primero en entrar, primero en salir). Un sinónimo de FIFO es FCFS, acrónimo inglés de First Come First Served ( primero en llegar, primero en ser servido). Es un… …   Wikipedia Español

  • Registro tubo — Saltar a navegación, búsqueda Contenido 1 Concepto 2 Aplicaciones 3 Tipos 3.1 Llenado/vaciado …   Wikipedia Español

  • Siebel Si 201 — Si 201 Modelo a escala del Siebel Si 201. Tipo Avión de observación Fabricante …   Wikipedia Español

  • Si 201 — Saltar a navegación, búsqueda Siebel Si 201 Descripción Rol Tripulación 2 Primer vuelo n/a Entrada en servicio n/a Constructor Siebel Flu …   Wikipedia Español

  • Lunar Prospector — El Lunar Prospector fue una sonda espacial destinada al estudio de la superficie de la Luna. Fue lanzada desde Cabo Cañaveral el 7 de enero de 1998, mediante un lanzador del Athena II. Se trataba de una nave de las denominadas “micro sonda”… …   Wikipedia Español

  • Andricus lignicola — Cola nut gall Mature galls on pedunculate oak Scientific classification Kingdom: A …   Wikipedia

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”