Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

Practice #4

الدرس 13 من 14 في دورة القوائم المترابطة (Linked List) - سلسلة هياكل البيانات #5 على Coddy.

challenge icon

التحدي

سهل

بفرض وجود مصفوفتين صحيحتين مرتبتين a و b (قيم لقائمتين مرتبتين متصلتين)، اكتب دالة mergeSorted تعيد مصفوفة مرتبة واحدة تحتوي على جميع القيم من كلا المدخلين.

استخدم القائمة المتصلة (linked list) لحل هذه المشكلة! قم بالمرور على كلتا القائمتين بالتوازي، مع أخذ الرأس الأصغر بشكل متكرر وإضافته إلى نتيجتك.

يجب عليك استخدام فئة LinkedList (المتوفرة في linkedlist.<ext> مع node.<ext>) — لا تستخدم الأدوات المدمجة في اللغة مثل عكس المصفوفات المدمج، أو التقطيع (slicing)، أو عمليات القوائم في المكتبة القياسية (stdlib) لحساب النتيجة.

جرّب بنفسك

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

جميع دروس القوائم المترابطة (Linked List) - سلسلة هياكل البيانات #5