Você está na página 1de 7

UNIVERSIDAD NACIONAL DE UCAYALI

FACULTAD DE INGENIERÍA DE SISTEMAS E INGENIERÍA CIVIL

ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

COLAS DOBLES - PYTHON

CATEDRÁTICO : Ing. Mg. Diana Margarita Díaz Estrada

CURSO : Inteligencia Artificial

ALUMNOS :

 Rodríguez Sandoval Patrick

PUCALLPA- PERÚ

2019
INTRODUCCION

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 First In First Out), debido a que el primer elemento en entrar será también el
primero en salir.

Las colas se utilizan en sistemas informáticos, transportes y operaciones de


investigación (entre otros), dónde los objetos, personas o eventos son tomados
como datos que se almacenan y se guardan mediante colas para su posterior
procesamiento. Este tipo de estructura de datos abstracta se implementa en
lenguajes orientados a objetos mediante clases, en forma de listas enlazadas.

La bicola o doble cola es un tipo de cola especial que permiten la inserción y


eliminación de elementos de ambos extremos de la cola.

Puede representarse a partir de un vector y dos índices, siendo su representación


más frecuente una lista circular doblemente enlazada.

Todas las operaciones de este tipo de datos tienen coste constante.


1. ¿QUE ES UNA COLA DOBLE?

Una cola doble, también conocida como cola de doble extremo, es una colección
ordenada de ítems similar a la cola. Tiene dos extremos, frente y final, y los
ítems permanecen posicionados en la colección. Lo que hace a una cola doble
diferente es la naturaleza no restringida de las operaciones de agregar y
remover ítems. Los ítems nuevos se pueden agregar en el frente o en el final.
Del mismo modo, los ítems existentes se pueden eliminar de cualquier extremo.
En cierto sentido, esta estructura lineal híbrida proporciona todas las
capacidades de las pilas y las colas en una única estructura de datos.

Es importante tener en cuenta que a pesar que las colas dobles pueden asumir
muchas de las características de las pilas y de las colas, ellas no requieren los
ordenamientos LIFO y FIFO que son respetados por esas estructuras de datos.
Depende de usted hacer un uso consistente de las operaciones agregar y
remover.
2. EL TIPO ABSTRACTO DE DATOS COLA DOBLE
El tipo abstracto de datos Cola Doble se define por la siguiente estructura y las
siguientes operaciones. Una cola doble está estructurada, como se describió
anteriormente, como una colección ordenada de ítems en la que se añaden y se
retiran ítems de cualquier extremo, ya sea por el frente o por el final. Las
operaciones de la cola doble se dan a continuación.

 ColaDoble() Crea una cola doble nueva que está vacía. No necesita
parámetros y devuelve una cola doble vacía.
 agregarFrente(ítem) añade un nuevo ítem al frente de la cola doble. Necesita
el ítem y no devuelve nada.
 agregarFinal(ítem) añade un nuevo ítem en el final de la cola doble. Necesita
el ítem y no devuelve nada.
 removerFrente() elimina el ítem que está en el frente de la cola doble. No
necesita parámetros y devuelve el ítem. La cola doble se modifica.
 removerFinal() elimina el ítem que está al final de la cola doble. No necesita
parámetros y devuelve el ítem. La cola doble se modifica.
 estaVacia() comprueba si la cola doble está vacía. No necesita parámetros y
devuelve un valor booleano.
 tamano() devuelve el número de ítems en la cola doble. No necesita
parámetros y devuelve un entero.
3. EJEMPLO

A modo de ejemplo, si asumimos que d es una cola doble que se ha creado y que
está actualmente vacía, entonces la tabla muestra los resultados de una secuencia de
operaciones sobre la cola doble. Tenga en cuenta que el contenido que está en el
frente aparece listado a la derecha. Es muy importante hacer un seguimiento de los
dos extremos, frente y final, a medida que se ingresan y retiran ítems de la colección
ya que las cosas pueden tornarse un poco confusas.

Operación de cola doble Contenido de la cola doble

d.estaVacia() []

d.agregarFinal(4) [4]

d.agregarFinal('perro') ['perro',4,]

d.agregarFrente('gato') ['perro',4,'gato']

d.agregarFrente(True) ['perro',4,'gato',True]

d.tamano() ['perro',4,'gato',True]

d.estaVacia() ['perro',4,'gato',True]

d.agregarFinal(8.4) [8.4,'perro',4,'gato',True]

d.removerFinal() ['perro',4,'gato',True]

d.removerFrente() ['perro',4,'gato']
4. VERIFICADOR DE PALINDROMOS
Un problema interesante que se puede resolver fácilmente usando la estructura de
datos Cola Doble es el clásico problema de los palíndromos. Un palíndromo es una
cadena que se lee igual hacia adelante y hacia atrás, por
ejemplo, radar, oso y madam. Nos gustaría construir un algoritmo al cual se le
introduzca una cadena de caracteres y compruebe si es un palíndromo.

La solución a este problema utilizará una cola doble para almacenar los caracteres
de la cadena. Vamos a procesar la cadena de izquierda a derecha y a agregar
cada carácter al final de la cola doble. En este punto, la cola doble estará actuando
de forma muy parecida a una cola ordinaria. Sin embargo, ahora podemos hacer
uso de la doble funcionalidad de la cola doble.

4.1 CODIGO

from pythoned.basicas.coladoble import ColaDoble

def verificarPalindromo(cadena):

colaDobleCaracteres = ColaDoble()

for caracter in cadena:

colaDobleCaracteres.agregarFinal(caracter)

aunIguales = True

while colaDobleCaracteres.tamano() > 1 and aunIguales:

primero = colaDobleCaracteres.removerFrente()

ultimo = colaDobleCaracteres.removerFinal()

if primero != ultimo:

aunIguales = False
return aunIguales

print(verificarPalindromo("lsdkjfskf"))

print(verificarPalindromo("radar"))

Você também pode gostar