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 4
Preguntas 0
Se logro para una lista de 4 nodos. Me quedaría aprender como lo hago cíclico.
template<class T> void Lista<T>::Reorder() {
Nodo<T> *aux=inicio;
Nodo<T> *miInicio=inicio;
if (inicio== nullptr){
throw 404;
}
while (aux->getSiguiente()!= nullptr){
aux = aux->getSiguiente();
}
aux->setSiguiente(inicio->getSiguiente());
inicio->setSiguiente(aux);
miInicio=aux;
miInicio=miInicio->getSiguiente();
miInicio->getSiguiente()->setSiguiente(nullptr);
}
La consola
0->1->2->3->NULL
0->3->1->2->NULL
Analizando la solución podría ser similar al ejerció de pares e impares, combinado con dos apuntadores, en los extremos, es decir que conoceremos aparte del head
la tail
y tendremos cuenta el previous
.
aunque creo que no se trabaja con tail
en el ejercicio.
.
Seria con dos apuntadores, conocer la mitad, y se sabe que mitad+1 hasta el ultimo son los que deben ir cambiando similar al del palindrome. solo que considerar si trabar con el previous o ordenar la parte derecha, pero creo que es mejor trabajar con previous porque de entrada el ultimo valor ya esta ordenado.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?