JavaScript - tengo q intercambiar el elemento d la pos1 con el d pos2 Listas Simples

 
Vista:
sin imagen de perfil

tengo q intercambiar el elemento d la pos1 con el d pos2 Listas Simples

Publicado por Marcos (2 intervenciones) el 30/09/2021 17:40:47
/*Ej1:lista.switchPos(1,3);
Ej2:lista.switchPos(0,4)
o me funciona uno o el otro no los dos ejemplos
desde ya muchas gracias.
Implementar el método switchPos dentro del prototype de LinkedList que deberá intercambiar
el elemento que se encuentre en pos1 con el elemento en pos2
En el caso de que alguna de las dos posiciones no sea válida (Supere el tamaño de la lista actual
o sea un número negativo) debe devolver false.
Si los nodos fueron removidos correctamente devolver true.
Aclaración: la posición cero corresponde al head de la LinkedList
Ejemplo 1:
Suponiendo que la lista actual es: Head --> [1] --> [2] --> [3] --> [4] --> [5]
lista.switchPos(1,3);
Ahora la lista quedaría: Head --> [1] --> [4] --> [3] --> [2] --> [5]
*/
LinkedList.prototype.cambiaPos = function(pos1,pos2){

let value1;
let value2;

//encuentro el valor del nodo de la pos1
if(pos1 > this._length || pos1 < 0){return false;}
else{
let actual=this.head;
while(pos1>0){
pos1--;
actual=actual.next;
}
value1 = actual.value;
actual.value=null;
}

if(pos2 > this._length|| pos2 < 0){return false;}
else{
let actual=this.head;
while(pos2>0){
pos2--;
actual=actual.next;
}
value2 = actual.value;
actual.value=value1;
}

let actual = this.head;
if(pos1===0){

actual.value = value2;
}

while(pos1 > 0){
pos1--;
actual=actual.next;
}
actual.value = value2;
return true;

}
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

tengo q intercambiar el elemento d la pos1 con el d pos2 Listas Simples

Publicado por pablo (1 intervención) el 13/12/2021 12:10:33
buenas , ami este codigo me funciono. Soy principiante , a lo mejor se podria mejorar el codigo , pero funciona. saludos

LinkedList.prototype.switchPos = function(pos1, pos2){
// Tu código aca:

let current=this.head;
var valor1=0;
let valor2=0;

if(pos1 < 0 || pos1 > this.size())
return false;


if(pos2 < 0 || pos2 > this.size())
return false;

for (var i=0; i < this.size();i++){

if(i===pos1) {valor1=current.value;
}


if(i===pos2) {valor2=current.value;
}

current=current.next;
}
current=this.head;

for(var j=0;j<this.size();j++){

if(j=== pos1){
current.value=valor2;
}

if(j===pos2){
current.value=valor1;
}
current=current.next;
}

return true;

}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar