Se muestra la resolución de varios ejercicios del capítulo de Dinámica de traslaciónDescripción completa
Estructuras de Datos Datos - Lista de Ejercicios Listas Enlazadas LISTA ENLAZADA: Usando la implementaci on basica del TAD TLE isto en clase! con las op eraciones b asicas de insertar! reportar!" eliminar! realizar las si#uientes tareas: Nota: Todos los procedimientos $ue usted implemente a#r e#uelos e#uelos a a su implementaci on basica! de modo $ue el TAD TLE sea mas mas completo% No se olide de probar en el main el buen &uncionamiento de su pro cedimiento% ´
´
´
´
'%
Implementar un procedimiento para insertar un da dato to en ord orden en decirr! el nodo $ue representa el ascendent ascen dentee en una lista enla enlazada% zada% Es deci dato debe ser insertado en una p osici on tal $ue al recorrer la lista los nodos se recorran de menor a ma"or ma"or respecto del dato% ´
(% A)ora )a#alo en orden descendente% *% +emos isto inserciones en orden " al &inal de la lista% Supon#amos! $ue los nodos tienen una p osici on relatia ,! '! %%%n - '! donde donde n es el nu mero de elementos en la lista% Implemente una procedimiento $ue inserte un dato en una posicion dada% Si la p osici on es , tiene $ue insertarlo al inicio% El u ltimo nodo est a en la posicion n - '! por lo tanto si se le pide insertar en n - '! el dato debe ser insertado antes del u ltimo " el u ltimo aanza% Note $ue es posible insertar un dato en n! eso )a r .a $ue el dato se inserte al &inal de to dos% ´
´
´
´
´
´
´
´
/% Implemente un procedimiento $ue inserte un dato de modo similar al insertar basico! al &inal de la lista% 0ero a)ora! no se debe permitir insertar datos repetidos! si un dato "a esta almacenado entonces la lista no a r .a% ´
1% Implemente un procedimeiento para eliminar un nodo dado un orden relati o% 2% Implemente una &uncion $ue $ue deuela deuela el nu mero de elementos de una lista enlazada% ´
3% 4on las &unciones "a implementadas! desarrolle un pro#rama $ue utilice un men u de opciones con las operaciones si#uientes: ´
'% 4rear lista% (% Insertar al &inal% 1
*% Insertar en una p osicion% /% Eliminar de una p osicion% 1% 5ep ortar% 2% 6btener nu mero de elementos% ´
3% Salir El usuario debe eli#er la opcion " el pro#rama interactu a con el usuario de acuerdo a cada operaci on% ´
´
0A5A 0ENSA5 UN 067UIT6 8A´ S999
2
% Implemente una &uncion $ue dada una lista enlazada l! deuela otra lista l' con solamente los nodos $ue almacenan un dato impar% ;% Implemente una &uncion $ue dada una lista enlazada l! deuela otra lista l' con con solamente los nodos $ue alma almacena cenan n un dato ma ma"or "or $ue el promedio% LISTA D6
nodo an anterior% terior% ',% Implemente la estructura necesaria para crear una lista doblemente enlazada =TLE(>% Una lista doblemente enlazada! ademas del puntero al inicio p'! p'! debe debe tener un puntero al &inal p(! de modo $ue la lista se pueda recorrer de inicio a &in " de &in a inicio% ''% A#re#ue las operaciones basicas de: Insertar un dato al inicio de la lista% &inal de la lista% Insertar un dato al &inal Eliminar un nodo de una posicion i! como en el caso del TLE% Insertar en orden
datos seran de tipo entero struct nodo s#teB puntero FB
t"pede& struct nodoBde&inimos a nodo como un tipo de ariable nodo &inBpuntero $ue ira siempre al &inal de la lista nodo listaBpuntero $ue para nosotros apuntara a la cabeza de nuestra lista
oid menu'=>B declaramos las &unciones a usar oid insertarInicio=>B oid insertarGinal=>B oid mostrar=>B oid buscarElemento=>B oid eliminarElemento=>B
cout@@K '% 45EA5 LISTA K@@endlB cout@@K (% INSE5TA5 AL GINAL K@@endlB
cout@@K *%
cout@@Kn INP5ESE 604I6N: KB
F
INSE5 TA5 AL INI4I6
oid insertarInicio=> C nodo nueoB nueoHne struct nodoB
cout@@KnINSE5 TA AL INI4I6nKB cout@@KnINP5ESE DAT6:KB cinnueo-nroB nueos#teHNULLB
i&=listaHHNULL> C cout@@K05I8E5 ELE8ENT6%%999KB
listaHnueoB
lista-s#teHlistaB
&inHnueoB F
else C nueo-s#te H listaB
lista H nueoB &in-s#te H listaB F
F INSE5T A5 AL GINAL oid insertarGinal=> C nodo nueoB nueoHne struct nodoB cout@@KnINSE5 TA AL INI4I6nKB cout@@KnINP5ESE DAT6:KB cinnueo-nroB nueos#teHNULLB
i&=listaHHNULL> C
cout@@K05I8E5 ELE8ENT6%%999KB
listaHnueoB
lista-
s#teHlistaB
&inHnueoB F
else C &in-s#te H
nueoB nueo-s#te H listaB &in H nueoB F F 86ST5 A5 T6D6S L6S DAT6S oid mostrar=> C nodo auQB auQHlistaB int iH'B
i&=lista9HNULL> C do C
cout@@K
K@@auQ-nroB auQ H auQs#teB
iRRB
F)ile=auQ9
Hlista>B F
else
cout@@KnntLista acia%%%9K@@endlB
F esta &uncion muestra la posicion del primer dato coincidente encontrado en la lista C nodo auQB int i H '! alor ! &la# H ,B
cout@@KnINP5ESE
ELE8ENT6 A
cinalorB i&=lista 9HNULL> C auQ H listaB
do C
i&=auQ-nro
HH alor> C cout@@Knn Encontrado en posicion K@@ i @@endlB
&la#H'B F
else C auQ H
auQ-s#teB
iRRB F
F)ile=auQ9
Hlista>B
i&=&la#HH,>
cout@@KnntNumer
o no econtrado%%9K@@endlB
F
else
cout@@KnntLista acia%%%9K@@endlB
F ELI8INA 5 ELE8ENT6 DETE58INAD6 oid eliminarElemento=> C nodo auQ! r! $B int i H '! &la# H ,!alorB
cout@@Kn INP5ESE ELE8ENT6 A ELI8INA5:KB cinalorB
i&=lista 9HNULL> C auQ H listaB
do C
i&=auQ-nro
HH alor> C i&=auQHHlista>si es $ue el dato a eliminar es el primero C rHlistaB listaHlista-s#teB auQHauQ-s#teB
&in-
s#teHlistaB rs#teHNULLB
i&=&in-
s#teHHNULL> C listaHHNULLB auQHHNULLB delete=r>B cout@@KnELE8EN
T6 ELI8INAD6%%%999nK B returnB F
else C
delete=r>B cout@@KnELE8EN T6 ELI8INAD6%%%999nK B returnB F F
else C
i&=auQHH&in>si es $ue el dato a eliminar es al $ue apunta a &in C rHauQB auQHauQ-s#teB
$s#teHauQB &inH$B rs#teHNULLB delete=r>B cout@@KnELE8EN T6 ELI8INAD6%%%999nK B returnB F
i&=buscarHHprimero>C primero H primero-si#uienteB primeroanteriorHultimoB ultimosi#uienteHprimeroB Felse i&=buscarHHultimo>C ultimo H ultimo-anteriorB primeroanterior H ultimoB ultimosi#uiente H primeroB FelseC
nodoeliminarsi#uienteHbuscarsi#uienteB buscarsi#uienteanteriorHnodoelim inarB F sD
nodoeliminarHbusc arB buscarHbuscarsi#uienteB F )ile=buscar9 Hprimero WW sDB
i&=sDC cout@@KEl dato buscado no se encontro nKB