
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;
}
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


0