Aqui esta una implementación en JavaScript: Odd Even LinkedList en JavaScript
Introducción
¿Ya tomaste el Curso Avanzado de Algoritmos: Patrones de Arrays y Strings?
Lista Enlazada
Estructura de datos: Lista Enlazada
Programando listas enlazadas con Java
Cómo Invertir una Lista Enlazada
Odd Even Linked List: análisis del problema
Solución de Odd Even Linked List
Playground: Odd Even Liked List
Programando Odd Even Linked List con C++
Linked List Cycle: análisis del problema
Solución de Linked List Cycle
Playground: Linked List Cycle
Programando Linked List Cycle con Python
Palindrome Linked List: análisis del problema
Solución de Palindrome Linked List
Playground: Palindrome Linked List
Programando Palindrome Linked List con Java
Reorder List: análisis del problema
Solución de Reorder List
Programando Reorder List con JavaScript
Playground: Reorder List Without Repeated Values
Reto: LRU Caché
Ejercicios recomendados de Lista Enlazada
Ejercicios resueltos de Lista Enlazada
Pilas y colas
Estructura de datos: Pilas y Colas
Paréntesis Válido: análisis del problema
Solución de Paréntesis Válido
Playground: Paréntesis Válido
Programando Paréntesis Válido con C++
Ejercicios recomendados de Pilas
Colas de prioridad
Estructura de datos: Colas de Prioridad
K Closest Points to Origin: análisis del problema
Solución de K Closest Points to Origin
Playground: K Closest Points to Origin
Programando K Closest Points to Origin con Python
Reorganize String: análisis del problema
Solución de Reorganize String
Playground: Reorganize String
Programando Reorganize String con Python
Ejercicios recomendados de Colas de prioridad
Ejercicios resueltos de Colas de prioridad
Próximos pasos
Toma el Curso Avanzado de Algoritmos: Grafos y Árboles
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 11
Preguntas 1
Aqui esta una implementación en JavaScript: Odd Even LinkedList en JavaScript
La profe tiene un error en la línea 15 porque colocó un punto en lugar de la fecha en la parte de “par**.**siguiente != nullptr”
oddeven en C++
template<class T> void Lista<T>::oddLista() {
//Defino los punteros fijos cabezas de linea
Nodo<T>*inicio_impar= nullptr;
Nodo<T>*inicio_par= nullptr;
//punteros de movimiento
Nodo<T> *general= nullptr;
Nodo<T> *par= nullptr;
Nodo<T> *impar= nullptr;
inicio_impar=inicio;
impar=inicio_impar;
inicio_par=inicio_impar->getSiguiente();
par=inicio_par;
while (par!= nullptr && par->getSiguiente() != nullptr){
impar->setSiguiente(par->getSiguiente());
impar=par->getSiguiente();
par->setSiguiente(impar->getSiguiente());
par=impar->getSiguiente();
}
impar->setSiguiente(inicio_par);
}
Esta es mi solución en C++:
No vi Bug.
Hola [email protected], no se puede acceder al archivo de google drive.
Lo hice distinto, es la misma lógica que utilicé para solucionar en el Playground con js, ahora con Java y el método toString para ver cómo queda, este código va en la clase ListaEnlaza realizada en la sección 3:
public void oddEvenLinkedList(Nodo cabeza) {
if (cabeza == null || (cabeza == this.cola)) { // Si la lista es nula o tiene sólo 1 Nodo
return;
}
Nodo anterior = cabeza;
Nodo actual = cabeza.siguiente;
Nodo colaOriginal = this.cola;
Nodo aux;
while (actual.siguiente != null) {
aux = actual.siguiente;
anterior.siguiente = actual.siguiente;
this.cola.siguiente = actual;
actual.siguiente = null;
this.cola = actual;
if (this.cola.equals(colaOriginal)) { // si la lista enlazada es de longitud par
/*
* Rompe el ciclo justo después de colocar como cola el Nodo colaOriginal
*/
break;
}
anterior = aux;
actual = aux.siguiente;
if (anterior.equals(colaOriginal)) { // si la lista enlazada es longitud impar
/*
* Rompe el ciclo cuando llegamos al Nodo colaOriginal
*/
break;
}
}
}
@Override
public String toString() {
String respuesta = "";
if (cabeza == null) { //Si la lista es vacía
respuesta = "ListaEnlazada{}";
} else if (cabeza != null && cabeza == cola) { // Si la lista tiene solo 1 nodo
respuesta = "ListaEnlazada{cabeza:" + cabeza.valor + ", cola: " + cola.valor + "}";
} else {
Nodo actual = cabeza;
while(actual.siguiente != null) {
respuesta += "actual: " + actual.valor + " -> ";
actual = actual.siguiente;
}
respuesta += "actual: " + actual.valor;
}
return respuesta;
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?