Menu
Coddy logo textTech

Practice #4

Lección 13 de 14 del curso Lista Enlazada - Serie de Estructuras de Datos #5 de Coddy.

challenge icon

Desafío

Fácil

Dados dos arreglos de enteros ordenados a y b (los valores de dos listas enlazadas ordenadas), escribe una función mergeSorted que devuelva un único arreglo ordenado que contenga todos los valores de ambas entradas.

¡Utiliza una lista enlazada para resolver este problema! Recorre ambas listas en paralelo, tomando repetidamente el valor más pequeño de las cabeceras para tu resultado.

Debes utilizar la clase LinkedList (proporcionada en linkedlist.<ext> junto con node.<ext>) — no utilices funciones integradas del lenguaje como el reverse de los arreglos, slicing u operaciones de listas de la biblioteca estándar para calcular el resultado.

Pruébalo tú mismo

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "solution.h"

int main() {
    char line1[8192];
    char line2[8192];
    if (!fgets(line1, sizeof(line1), stdin)) line1[0] = '\0';
    if (!fgets(line2, sizeof(line2), stdin)) line2[0] = '\0';
    int a[4096];
    int alen = 0;
    char* tok = strtok(line1, " \t\r\n");
    while (tok) { a[alen++] = atoi(tok); tok = strtok(NULL, " \t\r\n"); }
    int b[4096];
    int blen = 0;
    tok = strtok(line2, " \t\r\n");
    while (tok) { b[blen++] = atoi(tok); tok = strtok(NULL, " \t\r\n"); }
    int rs = 0;
    int* r = mergeSorted(a, alen, b, blen, &rs);
    for (int idx = 0; idx < rs; idx++) {
        if (idx > 0) printf(" ");
        printf("%d", r[idx]);
    }
    printf("\n");
    return 0;
}

Todas las lecciones de Lista Enlazada - Serie de Estructuras de Datos #5