Dev - C++ - Ejercicio Listas

   
Vista:

Ejercicio Listas

Publicado por Jonathan (10 intervenciones) el 21/06/2017 19:10:45
Hola a todos, tengo una gran duda por favor vean he tenido muchos problemas para resolver el siguiente ejercicio:

Realizar un metodo para intercambiar dos listas enlazadas, ejemplo si la lista 1 es = 1,2,3 y la lista 2= 4,5,6 entonces la lista 1 tendria se intercambian los elementos: tengo el siguiente codigo que hice pero dado 2 nodos especificos pero necesito uno que me haga con todos los elementos por favor:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void swapnodes(Pnodo ref ,int x , int y )
{ Pnodo *prevx= Null, *currx=*red
 
while(currx && currx->info!=x)
{ prevx=currx;
  currx=currx->sig;
}
 
Pnodo*prevx=Null, *curry=*ref
while(curry && curry *info!=y)
{ prevy=curry;
  curry=curry->sig;
}
 
//si x no esta al principio de la lista
if(prevx!=Null)
prevx->sig=curry;
else //sino hace y como elem de cabecera
*ref=curry
 
//si y no esta al principio
if(prevy!=Null)
{ prevy->sig=curry;
 *ref=curry;
 
//intercambio de punteros;
Pnodo * temp=curry->sig;
curry->sig=currx->sig;
currx->sig=temp
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Dionicio

re: Ejercicio Listas

Publicado por Dionicio (57 intervenciones) el 22/06/2017 06:23:55
Para intercambiar las listas bastaría con que lleves el control de los elementos principales de cada lista y luego hagas un cambio con el método de la burbuja.

1
2
3
4
5
6
7
Funcion Intercambiar(valor1, valor2)
      valorTemporal = valor1;
 
      valor1 = valor2;
      valor2 = valorTemporal;
 
FinFuncion

Al intercambiar ambos principios de listas habrás intercambiado las listas en su totalidad, ya que cada lista conoce su siguiente elemento. Por ejemplo 1 -> 2 -> 3 y por otro lado 4 -> 5 -> 6 si intercambias a 1 y 4(estando enlazados con sus elementos siguientes) ambos conocerán sus siguientes elementos respectivamente.

Aquí debajo te dejo un ejemplo en C, espero te sirva. Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar