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

Practice #4

الدرس 13 من 14 في دورة القائمة المرتبطة - سلسلة هياكل البيانات #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;
}

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