microprocesador
Profesor
Última revisión
1.-
: “Aprenda Estructuras de Datos como en PRIMARIA…”
: Braulio Barrios
: Octubre/2012
Zúñiga
Se tiene una LISTA DOBLEMENTE ENLAZADAconteniendo caracteres alfabéticos, como se ilustra en la Figura-1.
cab
Ω H
B
T
B
Z
T
B
Figura-1
El proceso a realizar en dicha estructura de datos consiste en “Retirar” deella los nodos que contengan caracteres que
aparezcan “Más de una vez”. Al final, la lista quedará UNICAMENTE con aquellos caracteres que NO estaban repetidos;
de tal forma que para la lista de esteejemplo, el resultado del proceso sería el que se ilustra en la Figura-2.
cab
Ω
H
Z
Ω
Figura-2
A continuación va MI VERSIÓN (Esta es la SEGUNDA. La PRIMERA la dí en Clase). ¿Cuál esla suya?
Proceso
P ← cab
MQ ( P Ω ) haga /** P es el apuntador principal. Cada nodo apuntado por él es comparado con los demás **/
cont ← 0 Q ← cab /** Q recorre toda la lista contando lascoincidencias del carácter…. **/
MQ ( Q Ω) haga
Si ( Q↑.info = P↑.info) ent
cont ← cont +1
Fin si
Q ← Q↑.Sig
Fin MQ
Si (cont > 1) ent
(* Borro todos los datos que sean iguales a los que apunta P*)
Dato ← P ↑.info; R ← cab
MQ ( R Ω ) haga
Si ( R ↑.Info = Dato) ent (*Lo Borro*)
Si (R = cab) AND (Cab ↑.Sig = Ω ) ent /* el primero y UNICO ????? */
P ← P↑.Sig ; Dispose( R ); R ← Ω; cab ←Ω;
Sino
Si (R = cab) AND (Cab ↑.Sig Ω ) ent /* el primero ????? */
cab ← cab ↑.Sig; cab ↑.Ant ← Ω;
P ← P↑.Sig; Dispose( R ); R ← cab;
Sino
Si ( R↑.Sig = Ω) ent /* el último ????? */
SI R = P ent/* coincide con el apuntado por P ????? */
P ← P↑.Sig
Fin Si
R↑.Ant↑.Sig ← Ω; Dispose(R); R ← Ω;
Sino /* Es Uno INTERMEDIO */
R ↑.Ant ↑.Sig ← R↑.Sig; R ↑.Sig↑.Ant ← R↑.Ant;
SI R = P ent /*coincide con el apuntado por P ????? */
P ← P↑.Sig
Fin Si
T ← R↑.Sig; Dispose (R); R ← T
Fin Si
Fin Si
Fin Si
Sino
R ← R ↑.Sig
Fin si
Fin MQ
Sino
P ← P ↑.Sig
Fin Si
FMQ
Fin proceso...
Regístrate para leer el documento completo.