Introducci贸n

1

驴Ya tomaste el Curso Avanzado de Algoritmos: Patrones de Arrays y Strings?

Lista Enlazada

2

Estructura de datos: Lista Enlazada

3

Programando listas enlazadas con Java

4

C贸mo Invertir una Lista Enlazada

5

Odd Even Linked List: an谩lisis del problema

6

Soluci贸n de Odd Even Linked List

7

Playground: Odd Even Liked List

8

Programando Odd Even Linked List con C++

9

Linked List Cycle: an谩lisis del problema

10

Soluci贸n de Linked List Cycle

11

Playground: Linked List Cycle

12

Programando Linked List Cycle con Python

13

Palindrome Linked List: an谩lisis del problema

14

Soluci贸n de Palindrome Linked List

15

Playground: Palindrome Linked List

16

Programando Palindrome Linked List con Java

17

Reorder List: an谩lisis del problema

18

Soluci贸n de Reorder List

19

Programando Reorder List con JavaScript

20

Playground: Reorder List Without Repeated Values

21

Reto: LRU Cach茅

22

Ejercicios recomendados de Lista Enlazada

23

Ejercicios resueltos de Lista Enlazada

Pilas y colas

24

Estructura de datos: Pilas y Colas

25

Par茅ntesis V谩lido: an谩lisis del problema

26

Soluci贸n de Par茅ntesis V谩lido

27

Playground: Par茅ntesis V谩lido

28

Programando Par茅ntesis V谩lido con C++

29

Ejercicios recomendados de Pilas

Colas de prioridad

30

Estructura de datos: Colas de Prioridad

31

K Closest Points to Origin: an谩lisis del problema

32

Soluci贸n de K Closest Points to Origin

33

Playground: K Closest Points to Origin

34

Programando K Closest Points to Origin con Python

35

Reorganize String: an谩lisis del problema

36

Soluci贸n de Reorganize String

37

Playground: Reorganize String

38

Programando Reorganize String con Python

39

Ejercicios recomendados de Colas de prioridad

40

Ejercicios resueltos de Colas de prioridad

Pr贸ximos pasos

41

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

Adquiere por un a帽o todos los cursos, escuelas y certificados por un precio especial.

Antes: $249

Currency
$219/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Comprar ahora

Termina en:

0D
16H
19M
5S

Programando Odd Even Linked List con C++

8/41
Recursos

Aportes 7

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Aqui esta una implementaci贸n en JavaScript: Odd Even LinkedList en JavaScript

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++:




La profe tiene un error en la l铆nea 15 porque coloc贸 un punto en lugar de la fecha en la parte de 鈥減ar**.**siguiente != nullptr鈥

Comparto c贸digo de la profe en python:

Pruebas:

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