You are on page 1of 0

r

..







GUIA DIDACTICA

Unidad III


LISTA SIMPLEMENTE ENLAZADA









Septiembre, 2011
UNIVERSIDAD CENTROCCIDENTAL
LISANDRO ALVARADO
DECANATO DE CIENCIAS Y TECNOLOGA
SISTEMA DE EDUCACION A DISTANCIA
Facilitadores:
Prof. Maribel Menon!a
mmendonca@ucla.edu.ve
nonumeria.maribel@gmail.com
Prof. Sanra Li"a
slima@ucla.edu.ve
nonumeria.sandra@gmail.com
Prof. Niria#$a Pero%o
nperozo@ucla.edu.ve
nonumeria.niriaska@gmail.com
Prof. &ai"e Gil
jgil@ucla.edu.ve
nonumeria.jaime@gmail.com












GUIA DIDACTICA

Unia III


LISTA SIMPLEMENTE
ENLA'ADA





DATOS DE IDENTI(ICACI)N
A#i*na+,ra Programacin !o !um"rica #
C-i*o $1%&
.rea Programacin !o !um"rica
Pro*ra"a #ngenier'a #n(orm)tica
De/ar+a"en+o Sistemas
Tel0fono 02*1+2*,1-01
Elabora1i-n .ulio 2011
2l+i"a A1+,ali%a1i-n
Reali%aa /or
Septiembre 2011
Pro(. /aribel /endon0a

UNIVERSIDAD CENTROCCIDENTAL
LISANDRO ALVARADO
DECANATO DE CIENCIAS Y TECNOLOGA
SISTEMA DE EDUCACION A DISTANCIA
Programacin No Numrica I
Pg. 3



TA3LA DE CONTENIDO
P1#/213 P3142
#ntroduccin %
5bjetivos *
o 5bjetivo 6eneral *
o 5bjetivo 2spec'(ico *
7ontenido Program)tico -
Fuentes de #n(ormacin $
2valuacin de los aprendizajes 8
S269!:3 P3142
:esarrollo del 3prendizaje ,
o 7onocimientos Previos ,
o ;#S43 ;#!23; S#/P;2/2!42 2!;3<3:3
o !#=2; ;56#75
o !#=2; :2 #/P;2/2!437#5!
o !#=2; :2 3P;#737#5!
o ;#S43 7#179;31 S#/P;2/2!42 2!;3<3:3
o !#=2; ;56#75
o !#=2; :2 #/P;2/2!437#5!
o !#=2; :2 3P;#737#5!

10
1%
18
2&
2-
2$
28
&1
1e(erencias &2


Programacin No Numrica I
Pg. 4






;a ;ista 2nlazada es un de las estructuras de
datos (undamentales, en la programacin, adem)s >ue puede ser
usada para implementar otras estructuras de datos. Se (orma de una
secuencia de nodos, donde se guardan los datos ? donde cada uno
@ace re(erencia al >ue sigue en la secuencia.
;a ventaja de las ;istas 2nlazadas respecto a un arreglo est) en
>ue el orden de los elementos enlazados puede ser di(erente al orden
de almacenamiento en la memoria, lo >ue @ace mas e(iciente el
proceso de insertar o eliminar un elemento en cual>uier punto dentro
de la secuencia.
;a ;istas Simplemente 2nlazadas pueden ser implementadas en
muc@os lenguajes ? puede ser ;ineal o 7ircular, dependiendo del
enlace del Altimo nodo, >ue puede ser nulo o al primier nodo de la
cecuencia respecivamente .
INTRODUCCION

Programacin No Numrica I
Pg. 5



O3&ETIVO TERMINAL4
:esarrollar aplicaciones utilizando e implementando el 43: de
;ista enlazada.
O3&ETIVOS ESPECI(ICOS4

1. :e(inir ;istas 2nlazadas

2. :eterminar cu)ndo es ventajoso el uso de listas enlazadas en
lugar de arreglos.

&. #mplementar ;istas lineales enlazadas como 43: en programacin
orientada a objetos BP55C con representacin din)mica.

%. #mplementar ;istas enlazadas circulares como 43: en P55 con
representacin din)mica.

*. 9tilizar listas enlazadas simples ? complejas en diversas
aplicaciones.

-. :esarrollar aplicaciones utilizando de manera adecuada los tipos
de listas enlazadas.
O3&ETIVOS

Programacin No Numrica I
Pg. 6





1. LISTA LINEAL SIMPLEMENTE ENLAZADA
1.1. Concepto
1.2. El Nodo
1.3. Caractersticas
1.4. Secuencial vs. Enlazada
2. NIVEL LOGICO
2.1. Inicializar
2.2. Vaca
2.3. Llena
2.4. Insertar_Comienzo
2.5. Insertar_Derecho
2.6. Eliminar_Derecho
2.7. Eliminar_Comienzo
2.8. Ejemplo
3. NIVEL DE IMPLEMENTACION
4. NIVEL DE APLICACION
5. LISTA CIRCULAR SIMPLEMENTE ENLAZADA
5.1. Diferencias con la Lista Lineal
6. NIVEL LOGICO
6.1. Insertar_Derecho
6.2. Eliminar_Derecho
7. NIVEL DE IMPLEMENTACION
8. NIVEL DE APLICACION


CONTENIDO

Programacin No Numrica I
Pg. 7








42D45 69E3:
1. F9.3!:3, ;uc'a. B1,,,C. G2structuras de :atos basadas en
4emplate en 7HHI. 97;3.

2n este teJto se encuentra de (orma detallada casi todo el contenido
de la unidad. 2sta gu'a did)ctica se @a desarrollado en base a
diversas (uentes, sin embargo en algunos tpicos, donde se considere
necesario, se @ar) re(erencia al teJto gu'a.

42D45S 75/P;2/2!431#5S:
1. .5K3!2S ;uis. B200-C. G2structuras de :atos en 7HHI. /c6raLM
Nill.
2. N2#;2/3! 6regor?.B1,,8C G2structuras de :atos, 3lgoritmos ?
P55I. /c6raL+ Nill.
&. .5K3!2S ;uis ? <3N5!215 #gnacio. B200%C. G3lgoritmos ?
2structura de :atos: 9na Perspectiva en 7I. /c6raL Nill: /adrid
%. .5K3!2S ;uis. B1,,8C. GProgramacin 5rientada a 5bjetosI.
/c6raLMNill.

Sitios Oed 1ecomendados:
LLL.algoritmia.net
LLL.programacion.com
(UENTES DE IN(ORMACION

Programacin No Numrica I
Pg. 8






;a evaluacin de tu aprendizaje en esta unidad ser) de la
siguiente manera:

Formativa:
o 3utoevaluacin: 4endr)s disponible una autoevaluacin >ue
podr)s tomar en el momento >ue te sientas preparado
mientras est) disponible la 9nidad.
o 2jercicios pr)cticos: Se indicaran algunos planteamientos o
ejercicios como actividades de control durante la lectura de
la gu'a did)ctica. #gualmente estar)n disponibles un
conjunto de ejercicios propuestos, para pro(undizar ?
re(orzar el manejo de la P55.
Sumativa:
2valuacin escrita: esta unidad se evaluar) en el primer parcial
escrito de 2* pts.
EVALUACI)N DE LOS APRENDI'A&ES

Programacin No Numrica I
Pg. 9


7onocimientos Previos

Para el estudio eJitoso de esta unidad se re>uiere el tener
dominio de:

+ !ociones b)sicas de Programacin 5rientada a 5bjetos.
+ 7HH.
+ /anejo de 3puntadores ? /emoria :in)mica.





De#arrollo el A/reni%a5e
Programacin No Numrica I
Pg. 10



7onociendo el uso de apuntadores ? variables din)micas, es
posible crear un conjunto de variables sucesivamente en la
memoria din)mica, unirlas con apuntadores ? obtener una
secuencia o lista de registros en memoria, con las siguientes
caracter'sticas:
7ada nodo es un registro con: in(ormacin ? una puntador al
siguiente nodo del mismo tipo.
#nicio es un apuntador >ue permite acceder la lista.
2l Altimo elemento apunta a !9;;.




Con1e/+o


9na lista es una coleccin de elementos @omog"neos con una
organizacin lineal. 7ada elemento debe indicar dnde se
encuentra el siguiente elemento de la lista.



2n una lista cada elemento eJcepto el primero tiene un Anico
predecesor, ? cada elemento eJcepto el Altimo tiene un Anico
sucesor.

LISTA LINEAL SIMPLEMENTE ENLA'ADA

Programacin No Numrica I
Pg. 11
El Noo

7ada elemento de la lista lo llamamos !5:5.

9n !5:5 contiene dos campos:
+ 7ampo de in(ormacin BIN(OC: puede ser un entero, un
car)cter, un registro, etc. Puede ser simple o estructurado Bpuede
contener uno o muc@os campos de datosC.
+ 7ampo de enlace BDEREC6OC : contiene la direccin del
prJimo elemento o el elemento de la derec@a en la lista..


;a parte del nodo >ue enlaza a cada uno con un siguiente es el
Puntero o 3puntador. 2n el Altimo elemento de la lista este valor
ser'a !9;5, para indicar >ue no tiene sucesor.

2ste 3puntador es el >ue determina el orden lgico >ue tienen
los elementos dentro de la lista, el cual no corresponde
necesariamente con la posicin ('sica >ue ellos ocupan.


Programacin No Numrica I
Pg. 12
Cara1+er7#+i1a#



;a estructura de una lista es lineal, esto es, eJiste un elemento
>ue es Gel primeroI ? otro >ue es Gel AltimoI.

;os elementos de una lista no pueden ser accedidos
directamente. Para llegar a un elemento determinado, se debe
comenzar por Gel primeroI ? luego, por el campo de enlace se va
al segundo elemento, ? as' sucesivamente @asta llegar al elemento
buscado o a Gel AltimoI elemento de la lista >ue contendr) el valor
!9;5 en el campo de enlace






Programacin No Numrica I
Pg. 13
Se1,en1ial 8#. Enla%aa







7on listas enlazadas es m)s ()cil insertar ? eliminar elementos
manteniendo el orden lgico.


Programacin No Numrica I
Pg. 14



INICIALI'AR
F9!7#P!: #nicializar la ;ista en vac'o.
2!413:3: !inguna.
S3;#:3: !inguna.
P1275!:#7#P!: !inguna.
P5S475!:#7#5!: ;ista inicializada.
;#S43.primero Q !9;;


VACIA
F9!7#P!: #ndica si la ;ista est) vac'a.
2!413:3: !inguna.
S3;#:3: 4192 si est) vac'a, F3;S2 en caso contrario.
P1275!:#7#P!: !inguna.
P5S475!:#7#5!: !inguna.


LLENA
F9!7#5!: #ndica si la ;ista est) ;lena.
2!413:3: !inguna.
S3;#:3: 4192 si est) llena, F3;S2 en caso contrario.
P1275!:#7#P!: !inguna .
P5S475!:#7#5!: !inguna.
NIVEL LOGICO

Programacin No Numrica I
Pg. 15

INSERTAR9COMIEN'O:Ele"en+o;

F9!7#5!: #nserta el elemento al comienzo de la lista.
2!413:3: 2l nuevo elemento.
S3;#:3: 4192 si es eJitoso, F3;S2 en caso contrario.
P1275!:#7#P!: ;a lista no este llena.
P5S475!:#7#5!: ;a lista contiene el elemento nuevo
al inicio.




INSERTAR9DEREC6O:P < Ele"en+o;

F9!7#P!: #nserta el elemento despu"s del nodo apuntado por
P. Si la lista esta vac'a insertar el primero elemento de la lista.
2!413:3: 3puntador P ? la in(ormacin a insertar.
S3;#:3: 4192 si es eJitoso, F3;S2 en caso contrario.
P1275!:#7#5!: ;a lista no est) llena.
P5S475!:#7#5!: ;ista con un nuevo nodo aRadido despu"s
del nodo apuntado por P.




Programacin No Numrica I
Pg. 16
ELIMINAR9DEREC6O :P< Ele"en+o;

F9!7#P!: 2limina el nodo despu"s del nodo apuntado por P.
2!413:3: 2l apuntador P.
S3;#:3: 2l valor del elemento >ue se elimin. 4192 si es
eJitoso, F3;S2 en caso contrario.
P1275!:#7#P!: ;a lista no est) vac'a.
P5S475!:#7#5!: ;a lista contiene un elemento menos
despu"s del !odo P.


ELIMINAR9COMIEN'O:Ele"en+o;

F9!7#P!: 2limina el nodo al comienzo de la lista.
2!413:3: !inguna.
S3;#:3: 2l valor del elemento >ue se elimin. 4192 si es
eJitoso, F3;S2 en caso contrario.
P1275!:#7#P!: ;a lista no est) vac'a.
P5S475!:#7#5!: ;a lista contiene un elemento menos Bel del
inicioC.


Programacin No Numrica I
Pg. 17
E&EMPLO4









ACTIVIDAD DE CONTROL
1ealiza el nivel lgico de una nueva operacin de la ;ista llamada
G4otalI >ue permita contar el nAmero de elementos de la ;ista
Programacin No Numrica I
Pg. 18


2n la implementacin de ;ista ;ineal Simplemente 2nlazada con
/emoria :in)mica en P55 no se necesita conocer el nAmero de
elementos de laBsC listaBsC en tiempo de compilacin. Se puede
llenar, tanto como la memoria lo permita.

;os nodos se obtienen ? liberan segAn el comportamiento de la
lista, ocupando solo la memoria >ue se necesiten.

3l implementar la ;ista en P55, se tiene una clase ;ista >ue
tendr) un apuntador al primer nodo de la lista Bel apuntador
eJternoC, >ue se llamar) primero.

Se implementar) la clase Noo >ue manejar) los atributos info
? er, para manejar la in(ormacin de los elementos de la lista ?
la direccin del nodo derec@o. 9n objeto G;istaI manipular) los
objetos G!odosI, para ir agregando, modi(icando ? eliminado
elementos a la ;ista ;ineal Simplemente 2nlazada.

4anto la clase G;istaI como la clase G!odoI manejar) datos
gen"ricos, a trav"s del uso de plantillas BGtemplateIC

G!odo.@I

Si(nde( !odoTN
Sde(ine !odoTN
template Uclass 4ipoV
class !odo W
private:
4ipo in(oX
!odoU4ipoVY derX
public:
void 3sig#n(oB4ipo inCX
4ipo 5bt#n(oBCX
void 3sig:erB!odoU4ipoVY pCX
!odoU4ipoVY 5bt:erBCX
ZX
Sinclude [!odo.cpp[
Sendi(
NIVEL DE IMPLEMENTACION

Programacin No Numrica I
Pg. 19

G!odo.cppI

template Uclass 4ipoV
void !odoU4ipoV::3sig#n(oB4ipo inCW
in(oQinX
ZX
template Uclass 4ipoV
4ipo !odoU4ipoV::5bt#n(oBCW
return in(oX
ZX
template Uclass 4ipoV
void !odoU4ipoV::3sig:erB!odoU4ipoVY pCW
derQpX
ZX
template Uclass 4ipoV
!odoU4ipoVY !odoU4ipoV::5bt:erBCW
return derX
ZX

G;ista.@I

Si(nde( ;istaTN
Sde(ine ;istaTN
Sinclude [!odo.@[
template Uclass 4ipoV
class ;ista
W
t?pede( !odoU4ipoVY 3puntadorX
private:
!odoU4ipoVY primeroX
public:
;istaBCX
!odoU4ipoVY 5btPrimeroBCX
void 3sigPrimeroB!odoU4ipoVY pCX
bool =aciaBCX
bool ;lenaBCX
bool #ns7omienzoB4ipo valorCX
bool 2li7omienzoB4ipo \valorCX
bool #ns:erec@oB3puntador p,4ipo valorCX
bool 2li:erec@oB3puntador p,4ipo \valorCX
];istaBCX
ZX
Sinclude [;ista.cpp[
Sendi(

Programacin No Numrica I
Pg. 20
[;ista.cpp:G

Sinclude UiostreamV
Sinclude UstringV
using namespace stdX
template Uclass 4ipoV
!odoU4ipoVY ;istaU4ipoV::5btPrimeroBCW
return primeroX
ZX
template Uclass 4ipoV
void ;istaU4ipoV::3sigPrimeroB!odoU4ipoVY pCW
primeroQpX
ZX
template Uclass 4ipoV
;istaU4ipoV::;istaBC
W
primeroQ!9;;X
ZX

template Uclass 4ipoV
bool ;istaU4ipoV::=aciaBC
W
return primero QQ !9;;X
ZX
template Uclass 4ipoV
bool ;istaU4ipoV::;lenaBC
W
!odoU4ipoV YpX
pQneL !odoU4ipoVX
i( BpQQ!9;;C
return trueX
else
W
delete pX
return (alseX
Z
ZX

template Uclass 4ipoV
bool ;istaU4ipoV::#ns7omienzoB4ipo =alorC
W
3puntador nuevoX
i( B^;lenaBCC
W
nuevoQneL !odoU4ipoVX
nuevo+V3sig#n(oB=alorCX
nuevo+V3sig:erBprimeroCX
primeroQnuevoX
Programacin No Numrica I
Pg. 21
return trueX
Z
elser
eturn (alseX
ZX


template Uclass 4ipoV
bool ;istaU4ipoV::2li7omienzoB4ipo \valorC
W
3puntador viejoX
i( B^=aciaBCC
W
viejoQprimeroX
valorQviejo+Vobt#n(oBCX
primeroQprimero+Vobt:erBCX
delete viejoX
return trueX
Z
elser
eturn (alseX
ZX


template Uclass 4ipoV
bool ;istaU4ipoV::#ns:erec@oB3puntador p,4ipo valorC
W
3puntador nuevoX
i( B^;lenaBCC
i( B=aciaBCC
W
#ns7omienzoBvalorCX
p Q 5btPrimeroBCX
Z
else i( BpQQ!9;;C
return (alseX
else
W
nuevoQneL !odoU4ipoVX
nuevo+V3sig#n(oBvalorCX
nuevo+V3sig:erBp+V5bt:erBCCX
p+V3sig:erBnuevoCX
return trueX
Z
else
return (alseX
ZX
Programacin No Numrica I
Pg. 22

template Uclass 4ipoV
bool ;istaU4ipoV::2li:erec@oB3puntador p,4ipo \valorC
W
3puntador viejoX
i( BpQQ!9;;C
return (alseX
else
i( Bp+Vobt:erBCQQ!9;;C
return (alseX
else
W
viejoQp+V5bt:erBCX
valorQviejo+V5bt#n(oBCX
p+V3sig:erBviejo+V5bt:erBCCX
delete viejoX
return trueX
ZX
ZX

template Uclass 4ipoV
;istaU4ipoV::];istaBC
W
!odoU4ipoV YpX
L@ile B^=aciaBCC
W
pQprimero+V5bt:erBCX
delete primeroX
primeroQpX
ZX
ZX

ACTIVIDAD DE CONTROL
7odi(i>ue una nueva operacin de la ;ista llamada G4otalI >ue
permita contar el nAmero de elementos de la ;ista
Programacin No Numrica I
Pg. 23


E&EMPLO4 7odi(icar un programa >ue lea por teclado 10
nAmeros enteros ? los inserte en una lista.

Sinclude UcstdlibV
Sinclude UiostreamV
Sinclude [;ista.@[
using namespace stdX
int mainBint argc, c@ar Yargv_`C
W
;istaUintV ;ista1X
int valorX
(orBint iQ0X iU10XiHHC W
cout UU [#ntroduzca un numero: [ UU endlX
cin VV valorX
;ista1.#ns7omienzoBvalorCX
Z
s?stemB[P39S2[CX
return 2D#4TS9772SSX
Z

NIVEL DE APLICACION

Programacin No Numrica I
Pg. 24
E&EMPLO4
7odi(icar un programa >ue lea por teclado 10 nAmeros enteros,
? los inserte en una lista por orden de entrada ? luego los
imprima.

Sinclude [;ista.@[
using namespace stdX
int mainBint argc, c@ar Yargv_`C
W
;istaUintV ;ista1X
!odoUintV YapX
int valorX
(orBint iQ0X iU10XiHHC W
cout UU [#ntroduzca un numero: [ UU endlX
cin VV valorX
i( B;ista1.=aciaBCC W
;ista1.#ns7omienzoBvalorCX
apQ;ista1.5btPrimeroBCX
Z
else W
;ista1.#ns:erec@oBap,valorCX
apQap+V5bt:erBCX
Z
Z

apQ;ista1.5btPrimeroBCX
L@ileBap^Q!9;;C W
valorQap+V5bt#n(oBapCX
cout UU [valor: [ UU valor UU endlX
apQap+V5bt:erBCX
Z
s?stemB[P39S2[CX
return 2D#4TS9772SSX
Z


Programacin No Numrica I
Pg. 25
E&EMPLO4
7odi(icar un programa >ue lea por teclado 10 nAmeros enteros,
? los inserte en una lista de manera ordenada.

Sinclude [;ista.@G
t?pede( !odoUintVY 3puntadorX
;istaUintV ;ista1X
3puntador ap,sigX
int valor,valorauJX
int mainBC
W
(orBint iQ1XiUQ10XiHHC
W
cout UU [!umero :[X
cin VV valorX
apQ;ista1.5btPrimeroBCX
i( B;ista1.=aciaBCC
;ista1.#ns7omienzoBvalorCX
else
W
valorauJQ;ista1.5btPrimeroBC+V5bt#n(oBCX
i( BvalorUvalorauJC
;ista1.#ns7omienzoBvalorCX
else
L@ile Bap^Q!9;;C
W
sigQap+V5bt:erBCX
i( BsigQQ!9;;C
W
;ista1.#ns:erec@oBap,valorCX
apQ!9;;X
Z
else
W
valorauJQsig+V5bt#n(oBCX
i( BvalorUvalorauJC
W
;ista1.#ns:erec@oBap,valorCX
apQ!9;;X
Z
else
apQsigX
ZX
ZX
ZX
ZX
ZX

Programacin No Numrica I
Pg. 26

9na variante de la ;ista ;ineal Simplemente enlazada es la ;ista
7ircular Simplemente 2nlazada. 2n esta lista se considera al
Primer nodo de la lista como el sucesor del 9ltimo nodo, en vez de
apuntar a !ulo.

7on esta modi(icacin se genera pr)cticamente un c'rculo, lo
>ue @ace posible llegar a cual>uier nodo de la lista a partir de
cual>uiera de sus nodos, algo imposible en una lista lineal.





Por conveniencia el apuntador eJterno de una lista circular
apuntar) al Altimo nodo de la lista, para as' poder acceder
()cilmente a los dos eJtremos de la lista

Diferen1ia# 1on la Li#+a Lineal

Posee un apuntador al Altimo en vez de al primero, por lo
tanto eJiste un m"todo para obtener la direccin del
Altimo de la lista.
2l Altimo nodo apunta al primero en vez de !9;;.
!o posee los m"todo #nsertarT7omienzo,
2liminarT7omienzo.

LISTA CIRCULAR SIMPLEMENTE ENLA'ADA

Programacin No Numrica I
Pg. 27

INSERTAR9DEREC6O:P < Ele"en+o;

F9!7#P!: 2limina el nodo despu"s del nodo apuntado por P.
2!413:3: 2l apuntador P.
S3;#:3: 2l valor del elemento >ue se elimin. 4192 si es
eJitoso, F3;S2 en caso contrario.
P1275!:#7#P!: ;a lista no est) vac'a.
P5S475!:#7#5!: ;a lista contiene un elemento menos
despu"s del !odo P.





ELIMINAR9DEREC6O :P< Ele"en+o;

F9!7#P!: 2limina el nodo despu"s del nodo apuntado por P.
2!413:3: 2l apuntador P.
S3;#:3: 2l valor del elemento >ue se elimin. 4192 si es
eJitoso, F3;S2 en caso contrario.
P1275!:#7#P!: ;a lista no est) vac'a.
P5S475!:#7#5!: ;a lista contiene un elemento menos
despu"s del !odo P.

NIVEL LOGICO

Programacin No Numrica I
Pg. 28

Si(nde( ;ista7irTN
Sde(ine ;ista7irTN
Sinclude [!odo.@[
template Uclass 4ipoV
class ;ista7ir
W
t?pede( !odoU4ipoVY 3puntadorX
private:
3puntador ultimoX
public:
!odoU4ipoVY 5bt9ltimoBCX
void 3sig9ltimoB3puntador pCX
!odoU4ipoVY 5btPrimeroBCX
;ista7irBCX
bool =aciaBCX
bool ;lenaBCX
bool #ns:erec@oB3puntador p,4ipo valorCX
bool 2li:erec@oB3puntador p,4ipo \valorCX
];ista7irBCX
ZX
Sinclude [;ista7ir.cpp[
Sendi(

template Uclass 4ipoV
;ista7irU4ipoV::Li#+aCirBC
W
ultimoQ!9;;X
ZX
template Uclass 4ipoV
bool ;ista7irU4ipoV::Va1iaBC
W
return ultimo QQ !9;;X
ZX
template Uclass 4ipoV
bool ;ista7irU4ipoV::LlenaBC
W
!odoU4ipoV YpX
pQneL !odoU4ipoVX
i( BpQQ!9;;C
return trueX
else
W
delete pX
return (alseX
Z
ZX
NIVEL DE IMPLEMENTACION

Programacin No Numrica I
Pg. 29

template Uclass 4ipoV
!odoU4ipoVY ;ista7irU4ipoV::Ob+Ul+i"oBCW
return ultimoX
ZX
template Uclass 4ipoV
void ;ista7irU4ipoV::A#i*Ul+i"oB3puntador
pCW
ultimoQpX
ZX
template Uclass 4ipoV
!odoU4ipoVY ;ista7irU4ipoV::Ob+Pri"eroBC
W
i( B=aciaBCC
return !9;;X
else
return ultimo+V5bt:erBCX
ZX

template Uclass 4ipoV
bool ;ista7irU4ipoV::In#Dere1=oB3puntador p,4ipo valorC
W
3puntador nuevoX
i( B^;lenaBCC
W
nuevoQneL !odoU4ipoVX
nuevo+V3sig#n(oBvalorCX
i( B=aciaBCC
W
nuevo+V3sig:erBnuevoCX
ultimoQnuevoX
Z
else
i( BpQQ!9;;C
W
nuevo+V3sig:erBultimo+V5bt:erBCCX
ultimo+V3sig:erBnuevoCX
Z
else
W
nuevo+V3sig:erBp+V5bt:erBCCX
p+V3sig:erBnuevoCX
i( BpQQultimoC
ultimoQnuevoX
Z
return trueX
Z
else
Programacin No Numrica I
Pg. 30
return (alseX
Z

template Uclass 4ipoV
bool ;ista7irU4ipoV::EliDere1=oB3puntador p,4ipo \valorC
W
3puntador viejoX
i( BpQQ!9;;C
return (alseX
else
i( Bp+V5bt:erBCQQ!9;;C
return (alseX
else
W
viejoQp+V5bt:erBCX
valorQviejo+V5bt#n(oBCX
i( BpQQviejoC
ultimoQ!9;;X
else
W
p+V3sig:erBviejo+V5bt:erBCCX
i( BviejoQQultimoC
ultimoQpX
Z
delete viejoX
return trueX
ZX
ZX

template Uclass 4ipoV
;ista7irU4ipoV::]Li#+aCirBC
W
3puntador p,auJX
pQultimoX
L@ile B^=aciaBCC W
auJQp+V5bt:erBCX
i( BauJQQpC ultimoQ!9;;X
else p+V3sig:erBauJ+V5bt:erBCCX
delete auJX
Z
ZX

ACTIVIDAD DE CONTROL
7odi(i>ue una nueva operacin de la ;ista 7ircular llamada G4otalI
>ue permita contar el nAmero de elementos de la ;ista.
Programacin No Numrica I
Pg. 31

&
3

E&EMPLO4
7odi(icar un programa >ue lea por teclado 10 nAmeros enteros,
? los inserte en una lista por orden de entrada ? luego los
imprima.

Sinclude [;ista7ir.@G
t?pede( !odoUintVY 3puntadorX
;ista7irUintV ;ista1X
nodoUintVY ap,ultimoX
int valor,valorauJX
int mainBC
W
(orBint iQ1XiUQ10XiHHC
W
cout UU [!umero :[X
cin VV valorX
;ista1.#ns:erec@oB;ista1.5bt9ltimoBC,valorCX
ZX

i( B^;ista1.=aciaBCC
W
apQ;ista1.5btPrimeroBCX
do
W
valorauJQap+V5bt#n(oBCX
cout UU [=alor : [ UU valorauJ UU endlX
apQap+V5bt:erBCX
Z
L@ile Bap^Q;ista1.5btPrimeroBCCX
ZX
;ista1.];ista7irBCX
s?stemB[P39S2[CX
return 2D#4TS9772SSX
Z



374#=#:3: :2 75!415;
1. 7odi(icar un programa >ue lea por teclado 10 nAmeros enteros, ? los
inserte en una lista circular de manera ordenada.


NIVEL DE APLICACION

Programacin No Numrica I
Pg. 32


1. F9.3!:3, ;uc'a. B1,,,C. G2structuras de :atos basadas en
4emplate en 7HHI. 97;3.
2. .5K3!2S ;uis. B200-C. G2structuras de :atos en 7HHI.
/c6raLMNill.
&. N2#;2/3! 6regor?.B1,,8C G2structuras de :atos, 3lgoritmos ?
P55I. /c6raL+ Nill.
%. .5K3!2S ;uis ? <3N5!215 #gnacio. B200%C. G3lgoritmos ?
2structura de :atos: 9na Perspectiva en 7I. /c6raL Nill:
/adrid
*. .5K3!2S ;uis. B1,,8C. GProgramacin 5rientada a 5bjetosI.
/c6raLMNill.



RE(ERENCIAS

You might also like