Menu
CoddyTech

Latihan #4

Pelajaran 13 dari 14 dalam kursus Linked List, Seri Struktur Data #5 di Coddy.

challenge icon

Tantangan

Mudah

Diberikan dua array integer yang terurut, a dan b (nilai dari dua linked list terurut), tulis fungsi mergeSorted yang mengembalikan satu array terurut yang berisi semua nilai dari kedua input.

Gunakan linked list untuk menyelesaikan masalah ini! Telusuri kedua list secara paralel, berulang kali mengambil head yang lebih kecil ke dalam hasilmu.

Kamu harus menggunakan class LinkedList (disediakan dalam linkedlist.<ext> bersama node.<ext>) — jangan gunakan fitur bawaan bahasa seperti reverse bawaan array, slicing, atau operasi list stdlib untuk menghitung hasilnya.

Coba sendiri

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

Semua pelajaran di Linked List, Seri Struktur Data #5

Latihan sendiri: Compiler C online