Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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