Está en la página 1de 35

J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.

Estructura de datos lineales


Tema 3
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3.1 Introduccin
Las estructuras de datos dinmicas son una coleccin de elementos (tambin
llamados nodos) que normalmente son registros con la particularidad que crecen a
medida que se ejecuta un programa.
Al contrario de los arreglos (estructuras de datos estticas) que pueden almacenar un
nmero fijo de elementos una estructura dinmica de datos se ampl!a " se contrae
durante la ejecucin del programa. #ic$o de otra manera este tipo de estructuras no
reser%a una &ona esttica (fija) de memoria para su almacenamiento sino que el
espacio ocupado crece o decrece a medida que e%oluciona (se ejecuta) la estructura
" su programa correspondiente.
Las estructuras de datos dinmicas se puede di%idir en dos grandes grupos
rboles
Grafos
Pilas
Colas
Listas
NO LINEALES LINEALES
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3.1 Introduccin
Las estructuras de datos dinmicas son e'tremadamente fle'ibles de all! que son
mu" utili&adas para el almacenamiento de datos que cambian constantemente.
Adems es relati%amente fcil a(adir informacin creando nue%os nodos o
insertndolo entre dos e'istentes. La modificacin de informacin sobre estas
estructuras es relati%amente fcil tanto en la modificacin como en la eliminacin
de un nodo e'istente.
)n este Tema anali&aremos las tres estructuras dinmicas lineales de datos pilas,
colas y listas.
Una estructura esttica de datos es aquella donde sus diferentes valores
pueden cambiar pero no su estructura dado que ella es fija. Su estructura se
especifica en el momento que se escribe el programa y no puede ser
modificada por el mismo.
Una estructura dinmica de datos, por el contrario puede modificar su
estructura mediante el programa, puede modificar su tamao aadiendo o
eliminando nodos mientras est! en ejecucin el programa.
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 #istas
*na lista es un conjunto ordenado de elementos de un tipo la misma puede %ariar
el nmero de elementos.
Lista #$ #1, #", #3, #%,....., #& donde LN es un elemento de la lista.
+ada elemento de la lista , a e'cepcin del primero , tiene un nico predecesor "
a su %e& cada elemento , a e'cepcin del ltimo , tiene un nico sucesor.
Los elementos de una lista lineal normalmente se almacenan uno detrs de otro en
posiciones consecuti%as de memoria por ejemplo las entradas en una gu!a
telefnica. +uando una lista se almacena en la memoria principal de una
computadora lo est $aciendo en posiciones sucesi%as de memoria- cuando se
almacena en cinta magntica los elementos sucesi%os se presentan en sucesin
en la cinta.
)sta asignacin de memoria toma el nombre de almacenamiento secuencial en
apartados posteriores %eremos el tipo de almacenamiento encadenado o enlazado.
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 #istas
3.".1.1 'epresentacin de listas
*no de los medios mas clsicos de reali&ar una lista lineal es mediante un %ector
donde los elementos se sitan en posiciones f!sicamente contiguas. .u
representacin
L/.TA L/0)AL
..........
1 2 3 0 031
4ector L
L 1 L 2 L 3 L n31 L n
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 #istas
3.".1." (peraciones
Las operaciones que pueden lle%arse a cabo en una lista son entre otras5
6 Recorrido de la lista5 +onsiste en %isitar todos o %arios de los elementos que
formen la lista.
6 Insercin de un elemento5 +onsiste en a(adir un nue%o elemento al arreglo. )sta
operacin tiene dos modalidades5 a) a(adir al final b) a(adir en el interior del
arreglo lo que pro%oca despla&amiento de algunos elementos.
6 Eliminacin de un elemento5 )sta operacin consiste en borrar un elemento
deseado " despla&ar a todos los elementos siguientes al que se desea borrar.
6 Bsqueda de un elemento5 7uscar la posicin de un elemento que posee un %alor
determinado.
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 #istas
3.".1.3 #istas enla)adas
Las listas enlazadas se presentan como alternati%as a los almacenamientos
contiguos " la misma se logra utili&ando punteros o enlaces para referenciar a
elementos de una lista lineal los cuales almacenan la direccin del elemento
sucesor , que no necesariamente debe ser ad"acente o contiguo f!sicamente.
)sta metodolog!a recibe el nombre de almacenamiento enlazado o encadenado.
*n elemento en la lista enla&ada se denomina nodo " contiene dos partes5
Informacin asociada al elemento. .er del tipo de datos que se quiera almacenar
en la lista.
untero5 +ampo de enlace que contiene la direccin del pr'imo elemento de la
lista. .e utili&a para establecer el enlace con otro nodo de la lista.
/089:;A+/90 <*0T):9
+ontiene la direccin del
siguiente nodo de la lista
+ontiene informacin
tales como 5 nombre
direccin telefno etc.3
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 #istas
3.".1.3 #istas enla)adas
<ara el ltimo nodo de la lista el campo <*0T):9 ser %ac!o (0/L) " ser una
direccin no %lida.
Al tener un campo <*0T):9 no es necesario almacenar los nodos en espacios
contiguos.
)l comien&o de la lista contiene una %ariable puntero con un nombre especial5
/0/+/9 que contiene la posicin del primer nodo de la lista.
/0/+/9
=A:+/A <):)> 8):0A0#)> nil
<untero o enlace del
nodo 2
informacin del nodo 1
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 #istas
3.".1.% #istas circulares
Las listas circulares tienen como caracter!stica que el ltimo elemento de la misma
apunta al primero.
Las listas enla&adas %istas en el apartado anterior no permiten a partir de un
elemento acceder directamente a cualquiera de los elementos que lo preceden.
)n las listas circulares en lugar de almacenar un puntero 0*L9 en el campo
./=*/)0T) del ltimo elemento de la lista se $ace que el ltimo elemento
apunte al primero o al principio de la lista. )ste tipo de estructura es lo que se
conoce con el nombre de lista enlazada circular o lista circular tambin este tipo
de estructuras recibe el nombre de anillo.
/0/+/9
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 #istas
3.".1.% #istas circulares
Las listas circulares presentan %entajas con respectos a la %istas en el apartado
anterior5
#ado un nodo cualquiera se puede recorrer toda la lista completa en cambio
en las listas enla&adas solo se las puede recorrer por completo partiendo de su
primer nodo.
La concatenacin "?o di%isin de listas es ms efica& en esta estructura.
<ero por el contrario se puede obser%ar incon%enientes en listas circulares5
.e pueden producir bucles infinitos.
La forma de e%itar este incon%eniente es colocando un nodo especial llamado
ca!ecera de la lista. Los nodos de cabecera pueden tener un %alor especial en el
campo /089:;A+/@0 que no es %lido como datos de otros elementos (&ona
sombreada de la figura) puede tener tambin un indicador o bandera (flag) que
indique cuando es nodo de cabecera.
+A7)+):A
Las operaciones en listas circulares son similares a las operaciones en listas lineales.
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 *ilas
"na pila es una lista de elementos a la cual se puede insertar o eliminar alguno
solo por uno de los e#tremos, por lo tanto los elementos de una pila sern
eliminados en orden in%erso al que se insertaron. )s decir el ltimo elemento que
se introduce en la pila es el primero que se saca.
+on analog!a con la %ida real por ejemplo puede %erse una estructura de pila de
platos es de suponer que el cocinero si necesita un plato limpio tomar el que
est encima de todos que es el ltimo que se coloc en la pila. 9tros ejemplos
de pilas son las latas en un supermercado dispuestas de distintas maneras
a) <ila de <latos b) <ila de latas c) <ila de latas
Las pilas pertenecen al grupo de estructuras de datos lineales "a que los
componentes ocupan lugares sucesi%os en la estructura.
#ebido al orden en el cual se insertan o
eliminan elementos de una pila a esta
estructura tambin se la conoce como
estructura
#I+( (last $ In, %irst $ &ut' ultimo en
entrar, primero en salir(
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 *ilas
3.".".1 'epresentacin de pilas
Las pilas no son estructuras fundamentales de datos es decir no estn definidos
como tales en los lenguajes de programacin como lo estn por ejemplo los
arreglos. .e pueden representar mediante el uso de5

Arreglos

Listas )nla&adas
Aqu! se utili&arn A::)=L9. por lo que se deber definir el tama(o m'imo de
la pila " adems una %ariable au'iliar a la que se denominar ,(*E o -I./
que ser un apuntador al ltimo elemento insertado en la pila.
.....
AAAA
3333
2222
1111
T9<)
;AB/;9
</LA
AAA 777 +++ ### .....
</LA
T9<) ;AB/;9
1 2 3 A 031 0
1
2
3
A
0
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 *ilas
3.".".1 'epresentacin de pilas
se representan ejemplos de pila llena (a) pila con algunos elementos (b) " pila
%ac!a (c)
CCCC
.....
AAAA
3333
2222
1111
T9<) D ;AB
</LA
1
2
3
A
0
.....
3333
2222
1111
;AB
</LA
1
2
3
A
0
T9<)
.....
;AB
</LA
1
2
3
A
0
T9<) D E
a) <ila llena
b) <ila con algunos
elementos
c) <ila %ac!a
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 *ilas
3.".".1 'epresentacin de pilas
CCCC
.....
AAAA
3333
2222
1111
T9<) D ;AB
</LA
1
2
3
A
0
.....
3333
2222
1111
;AB
</LA
1
2
3
A
0
T9<)
.....
;AB
</LA
1
2
3
A
0
T9<) D E
a) <ila llena
b) <ila con algunos
elementos
c) <ila %ac!a
<or ejemplo en la figura donde T9<) D ;AB si se quisiera insertar otro elemento se
tendr!a un error de desbordamiento. La pila est llena " el espacio reser%ado de memoria
es fijo no puede en este caso ni e'pandirse ni contraerse.
+omo una primera solucin a este tipo de errores se puede definir pilas de gran tama(o
pero esto resulta costoso e ineficiente uso de la memoria si solo se ocupan algunos
elementos de la misma.
Al utili&ar esta estructura
con arreglos se debe tener
en cuenta el tama(o
m'imo de la pila- cuando la
%ariable au'iliar T9<)
llegue al m'imo definido
no se podr insertar mas
elementos. *na %e& que la
pila esta llena
(T9<)D;AB) " si se
intenta insertar un nue%o
%alor ocurrir un error
conocido con el nombre de
des!ordamiento F
(94):8L9G).
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 *ilas
3.".".1 'epresentacin de pilas
9tra alternati%a que e'iste como solucin es definir dos pilas de 0 elementos en
un solo arreglo de 2H0 elementos esto se conoce con el nombre de espacios
compartidos de memoria. .upongamos que se necesitan dos pilas de 0
elementos m'imos cada una se definir un solo arreglo de 2 H 0 elementos
en lugar de dos arreglos de 0 elementos cada uno.
:epresentacin de pilas en espacios compartidos
)n la figura la </LA 1 ocupar desde la posicin 1 en adelante mientras que la
</LA 2 ocupar desde el espacio 20 $acia atrs (2031 2032 ....).
..... .....
T9<) 1 T9<) 2
1 2 3 2 0 31 20
</LA 1
0 0I1
</LA 2
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 *ilas
3.".".1 'epresentacin de pilas
<uede ocurrir que en algn punto del proceso la </LA 1 necesitara mas de 0
espacios " en ese momento la </LA 2 no tu%ieran sus 0 lugares ocupados en
consecuencia se podr!a seguir agregando elementos a la </LA 1 sin caer en
el error de desbordamiento (%er figura). )l mismo tratamiento se $ar!a en la
</LA 2 si esta necesitara mas lugar.
)'iste otro tipo de error que se lo conoce con el nombre de subdesbordamiento (underflo)) es
cuando se intenta eliminar un elemento de una pila %ac!a.
..... .....
T9<) 2
1 2 3 2 0 31 20
</LA 1
0 0I1
</LA 2
T9<) 1
0I2
(a)
..... .....
T9<) 2
1 2 3 2 0 31 20
</LA 1
031 0
</LA 2
T9<) 1
0I1
(b)
)n la figura (a) La </LA 1 tiene
ms de 0 elementos " la </LA 2
tiene menos de 0 elementos.
)n la figura (b) ocurre lo contrario
la </LA 2 tiene ms de 0
elementos " la </LA 1 tiene
menos de 0 elementos.
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 *ilas
3."."." (peraciones
Las operaciones ms elementales que pueden reali&arse con una estructura de
pila son5
a) <oner un elemento (us*)
b) Juitar un elemento (op).
La reali&acin de cualquiera de las dos operaciones (insercin o e'traccin) se
reali&ar siempre por la parte superior.
Los algoritmos genricos para agregar o quitar elementos en una pila son los
siguientes5
&NE +IL,, -,., /&E, 0,/&(
Si T9<) K ;AB (4erifica que $a"a espacio libre)
entonces
T9<) D T9<) I 1 (actuali&a T9<))
</LA (T9<)) D #AT9
sino
escribir des!ordamiento
+in0si
1"I/, +IL,, /&E, 0,/&(
Si T9<) L E (4erifica que la pila no est %ac!a)
Entonces
#AT9 D </LA (T9<))
T9<) D T9<) 3 1
Sino
Imprimir M2u!des!ordamiento3
+in0si
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 *ilas
3."."." (peraciones
&NE +IL,, -,., /&E, 0,/&(
Si T9<) K ;AB (4erifica que $a"a espacio libre)
entonces
T9<) D T9<) I 1 (actuali&a T9<))
</LA (T9<)) D #AT9
sino
escribir des!ordamiento
+in0si
+9;)0>A:
..................
T9<) K ;AB 09
./
T9<) D T9<) I 1
</LA(T9<)) D #AT9
N#).79:#A;/)0T9N
+9;)0>A:
..................
T9<) L E 09
./
#AT9 D </LA(T9<))
T9<) D T9<) 3 1
N.*7#).79:#A;/)0T9N
A=:)=A )L);)0T9. A LA </LA
J*/TA )L);)0T9. A LA </LA
1"I/, +IL,, /&E, 0,/&(
Si T9<) L E (4erifica que la pila no est %ac!a)
Entonces
#AT9 D </LA (T9<))
T9<) D T9<) 3 1
Sino
Imprimir M2u!des!ordamiento3
+in0si
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 *ilas
3."."." (peraciones $ Ejemplo
.i se coloca (pus$) los O primeros meses del a(o en una pila la estructura
quedar!a como muestra la figura a). .u T9<) quedar!a en O (Punio). )n
cambio si se quitara el mes junio el T9<) apuntar!a al mes ;a"o (figura b)).
.....
A7:/L
;A:>9
8)7:):9
)0):9
;AB
</LA
1
2
3
A
a) Agregar
;AQ9 R
P*0/9 O T9<)
.....
A7:/L
;A:>9
8)7:):9
)0):9
;AB
</LA
1
2
3
A
b) Juitar
;AQ9 R T9<)
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 *ilas
3."."." (peraciones $ Ejemplo
"na pila tiene cargada los 4 primeros meses del a5o y se desea completar con
los meses restantes.
+9;)0>A:
T9<) D O
/0=:).A:
;).
T9<) K 12 0o <A:A:
./
T9<) D T9<) I 1
</LA (T9<)) D ;).
En pseudocdigo'
-omen)ar
T9<) D O
.ientras T9<) K 12
Ingresar ;).
T9<) D T9<) I1
</LA(T9<)) D ;).
+in0.ientras
*arar
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".1 *ilas
3."."." (peraciones $ Ejemplo
"na pila tiene cargada los 67 meses del a5o y se desea quitar los ltimos 8
meses del a5o.
+9;)0>A:
T9<) D 12
+90 D A ./ <A:A:
09
#AT9 D </LA (T9<))
T9<) D T9<) 3 1
+90 D E
+90 D +90 I 1
En pseudocdigo'
-omen)ar
T9<) D 12
+90 D E
.ientras +90 D A
#AT9 D </LA(T9<))
T9<) D T9<) , 1
+90 D +90 I 1
+in0.ientras
*arar
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".3 -olas
Las colas son otro tipo de estructura de datos similar a las pilas pero se
diferencian de ellas en la forma de insertar?eliminar elementos.
*na cola es entonces una lista de elementos en la que estos se introducen por
un e'tremo(final) " se eliminan por otro (frente). La eliminacin se reali&a en el
mismo orden en que fueron insertados por lo tanto el primer elemento
introducido ser el primero en ser eliminado.
<or esta caracter!stica las colas reciben el nombre de
+I+( 1Fist-in, First-Out: Primero en entrar, primero en salir)
<or esta caracter!stica este tipo de estructura se utili&a para almacenar datos que
necesitan ser procesados segn el orden de llegada.
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".3 -olas
)n la %ida real encontramos numerosos casos de colas5 personas esperando un
autobus personas que esperan ser atendidas en un banco autos que
esperan se(al de semforo entre otros. )n todos estos casos (personas
autos) el primero que llega ser el primero en salir.
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".3 -olas
3.".3.1 'epresentacin
)'isten casos de colas llenas %ac!as o con algunos elementos estos se %en
representados en la figura
CCCC
.....
1111
2222
3333
AAAA
8:)0T)
+9LA
A
3
2
1
0
a) +ola llena
b) +ola con algunos
elementos
8/0AL D ;AB CCCC
.....
1111
2222
3333
8:)0T)
+9LA
3
2
1
0 ;AB
8/0AL
c) +ola %ac!a
.....
8:)0T) D 8/0AL D E +9LA
3
2
1
0 ;AB
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".3 -olas
3.".3." (peraciones
Las operaciones que podemos reali&ar con colas son5
6 insertar un elemento
6 eliminar un elemento de la cola.
:ecordando la caracter!stica 8/89 de las colas la insercin se reali&a por el
8/0AL de la cola mientras que la eliminacin se reali&a por el 8:)0T).
Los algoritmos genricos para agregar o quitar elementos de una cola son los
siguientes5
&NE +9&L,, -,., %REN/E, %IN,L, 0,/&(
Si 8/0AL K ;AB (4erifica que $a"a espacio libre)
entonces
8/0AL D 8/0AL I 1 (actuali&a 8/0AL)
+9LA (8/0AL) D #AT9
Si 8/0AL D 1 Sse insert el primer elemento de la pila:
Entonces
8:)0T) D 1
+in0si
sino
Imprimir M.ubdesbordamientoT
+in0si
1"I/, +9&L,, -,. , %REN/E, %IN,L, 0,/&(
Si 8:)0T) KL E (4erifica que la cola no est %ac!a)
Entonces
#AT9 D +9LA (8:)0T))
Si 8:)0T) D 8/0AL (si $a" un solo elemento)
Entonces
8:)0T) D E (indica cola %ac!a)
8/0AL D E
Sino
8:)0T) D 8:)0T) I 1
+in0si
Sino
escribir 2u!des!ordamiento
+in0si
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".3 -olas
+9;)0>A:
..................
8/0AL K ;AB 09
./
8/0ALD 8/0AL I 1
+9LA(8/0AL) D #AT9
N#).79:#A;/)0T9
+9LA LL)0AN
+9;)0>A:
..................
8:)0T) KL E 09
./
#AT9 D +9LA(8:)0T))
N.*7#).79:#A;/)0T9
+9LA 4A+/AN
A=:)=A )L);)0T9. )0 LA +9LA J*/TA )L);)0T9. #) LA +9LA
8/0AL D 1
0o
.i 8:)0T) D 1
8:)0T) D 8/0AL .i 8:)0T) D E
8/0AL D E
8:)0T) D 8:)0T) I 1
0o
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".3 -olas
3.".3." (peraciones$ Ejemplo
.i se colocan los O primeros meses del a(o en una cola la estructura quedar!a
como muestra la figura a). )n este caso su ;AB/;9 ser!a de 12 (#iciembre) "
su 8/0AL en O. +aso b)5 )n cambio si se quitara el mes )0):9 el 8/0AL
apuntar!a al elemento O " el 8:)0T) al 2. +omo tercer opcin 3 caso c) , se
reali&an las dos operaciones juntas (a partir del caso a) por un lado se quita el
primer mes 3 8:)0T) D 2 , " se agrega el mes de Pulio 8/0AL D U.
)0):9
;AB
+9LA
1
2
3
12
a) Agregar
R
O 8/0AL
O
8:)0T)
;AB
+9LA
1
2
3
12
b) Juitar
R
O 8/0AL
O
8:)0T)
;AB
+9LA
1
2
3
12
c) Agregar " Juitar
R
O
8/0AL
A
8:)0T)
U
8)7:):9 8)7:):9 8)7:):9
;A:>9 ;A:>9 ;A:>9
A7:/L A7:/L A7:/L
;AQ9 ;AQ9 ;AQ9
P*0/9 P*0/9 P*0/9
..... ..... P*L/9
.....
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".3 -olas
3.".3." (peraciones$ Ejemplo
<one en la cola los O primeros
meses del a(o
+9;)0>A:
8/0AL D O ./
09
8/0AL D 8/0AL I 1
+9LA(8/0AL) D ;).
/0=:).A: ;).
8:)0T) D E
8/0AL D E
;AB D 12
<A:A:
+9LA (F)
FD112
-omen)ar
8:)0T) D E
8/0AL D E
;AB D 12
Ingresar +9LA
2asta 8/0AL D O
8/0AL D 8/0AL I 1
+9LA(8/0AL) D ;).
+in03asta
*arar
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".3 -olas
3.".3." (peraciones$ Ejemplo
.aca de la cola el primer mes
+9;)0>A:
8:)0T) D 8:)0T) I 1
#AT9 D +9LA(8:)0T))
8:)0T) D 1
8/0AL D O
;AB D 12
<A:A:
+9LA (F)
FD112
-omen)ar
8:)0T) D 1
8/0AL D O
;AB D 12
Ingresar +9LA
#AT9 D +9LA(8/0AL)
8:)0T) D 8:)0T) I 1
*arar
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".3 -olas
3.".3." (peraciones$ Ejemplo
*na cola de los d!as de la semana cargada como muestra en la figura 9ola
&riginal. )n el caso a) de la figura eliminamos los elementos desde lunes al
%iernes. )n el caso b) a continuacin agregamos el d!a domingo. Q en el caso c)
a continuacin se elimina el d!a sbado.
;AB
+9LA
1
2
3
U
a) Juitar
R
.A7A#9 O 8:)0T) D 8/0AL
O
+9LA +9LA
1
2
3
b) Agregar " Juitar
R
.A7A#9 O
8/0ALD ;AB
A
8:)0T)
U #9;/0=9
1
2
3
+) Juitar
R
O
8:)0T)D8/0AL
D ;AB
A
U #9;/0=9
P*)4).
;/):+9L).
;A:T).
L*0).
+9LA
1
2
3
U
4/):0). R
.A7A#9 O
O
+ola 9riginal
)n el ejemplo representado las colas
quedan de la siguiente manera5
Luego de eliminar los d!as lunes
martes mircoles jue%es " %iernes
Luego de agregar el d!a domingo
Luego de quitar el d!a sbado
Qa no se podr agregar un nue%o elemento dado que 8/0AL D ;AB a pesar de que , como
muestra el caso c) , $a" lugar disponible en la cola. )n este caso estamos en presencia de un
conflicto5 V+mo puede ser que $abiendo espacio no se pueda agregar elementosW.
)%identemente esta situacin nos muestra el mal uso de la memoria disponible este tipo de
estructura- pero este incon%eniente es superado manejando colas circulares.
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".3 -olas
3.".3.3 -olas circulares
*na cola circular es aquella en la que el elemento primero sigue al elemento ltimo
es decir el elemento anterior al primero es el ltimo. )ste tipo de estructura
obliga a dejar siempre una posicin libre para separar el principio del final pero
e%identemente siempre e'istir la limitacin de que pueda llenarse
completamente la cola.
La figura muestra distintas situaciones de una cola circular.
8/0AL
+9LA +/:+*LA:
1
2
3
U
a) 8rente es menor
que 8inal
R
O
8:)0T)
O
+9LA +/:+*LA:
1
2
3
b) 8rente es menor
que 8inal
R
O
8:)0T) A
8/0AL U
+9LA +/:+*LA:
1
2
3
c) 8rente es ma"or
que 8inal
R
O
8:)0T) A
8/0AL
U
<3
72
#A
>1 >1 >1
8A 8A 8A
=O =O =O
A1 A1 A1
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".3 -olas
3.".3.3 -olas circulares
)sta figura ilustra como se ubican los punteros 8:)0T) " 8/0AL durante las
operaciones de insercin " eliminacin. )n el caso a) la cola tiene algunos
elementos " en este caso el 8rente K 8inal. )n el caso b) .e $an eliminado dos
elementos de la cola " el puntero frente qued en A. )n el caso c) .e insertaron
elementos (<3) que como en este caso 8/0ALD;XB/;9 se lle% el primer
apuntador a la posicin que estaba %ac!a (8/0AL D 1). #e esta manera se $ace
un uso mas eficiente de la memoria disponible "a que al eliminar un elemento
esa casilla de la cola queda disponible para futuras inserciones.
8/0AL
+9LA +/:+*LA:
1
2
3
U
a) 8rente es menor
que 8inal
R
O
8:)0T)
O
+9LA +/:+*LA:
1
2
3
b) 8rente es menor
que 8inal
R
O
8:)0T) A
8/0AL U
+9LA +/:+*LA:
1
2
3
c) 8rente es ma"or
que 8inal
R
O
8:)0T) A
8/0AL
U
<3
72
#A
>1 >1 >1
8A 8A 8A
=O =O =O
A1 A1 A1
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".3 -olas
3.".3.3 -olas circulares$ se ilustran distintos casos que pueden ocurrir en las colas
circulares a) +9LA +/:+*LA: 3 )stado /nicial
>1 B1 QO
1 2 3
8A
R
=O
O A U
A1
8:)0T) 8/0AL
b) +9LA +/:+*LA:5 Luego de insertar un elemento (+ola llena)
>1 B1 QO 7A
1 2 3
8A
R
=O
O A U
A1
8:)0T) 8/0AL
c) +9LA +/:+*LA:5 Luego de eliminar elementos
7A
1 2 3 R O A U
A1
8:)0T) 8/0AL
d) +9LA +/:+*LA:5 Luego de eliminar el primer elemento (frente) se actuali&an
los punteros " 8:)0T) D 8/0AL
7A
1 2 3 R O A U
8:)0T) D 8/0AL
e) +9LA +/:+*LA:5 +ola %ac!a luego de eliiminar el ltimo elemento
1 2 3 R O A U
frente D final D E
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".3 -olas
3.".3.% 4oble cola
)'iste una %ariante de la cola simple desarrollada anteriormente " es la do!le cola o
!icola. )s una cola bidireccional "a que sus elementos pueden ser insertados o
eliminados por cualquiera de los e'tremos5 8:)0T) o 8/0AL. La doble cola se
representa como se muestra en la figura
#97L) +9LA
1 2 3 ;AB
8:)0T) 8/0AL
Las dos flec$as de cada e'tremo indican que se pueden reali&ar las operaciones de
insercin " eliminacin.
J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
3." Estructuras de datos lineales
3.".3 -olas
3.".3.% 4oble cola
Las %ariantes que podemos encontrar son 5
0o!le cola de entrada restringida5 son las que aceptan inserciones solo al final de la
cola permitiendo que sus eliminaciones se realicen por cualquiera de los dos
e'tremos.
0o!le cola de salida restringida5 acepta eliminaciones solo al frente de la cola mientras
que las inserciones se pueden $acer por cualquiera de los dos e'tremos.
#oble +ola de entrada restringuida
1 2 3 ;AB
8:)0T) 8/0AL
#oble +ola de salida restringuida
1 2 3 ;AB
8:)0T) 8/0AL

También podría gustarte