Practice #3
الدرس 12 من 14 في دورة القوائم المترابطة (Linked List) - سلسلة هياكل البيانات #5 على Coddy.
التحدي
سهلمعطى مصفوفة أعداد صحيحة مرتبة arr (قيم قائمة مترابطة مرتبة)، اكتب دالة باسم removeDuplicates تُرجع المصنفة مع إزالة التكرارات المتتالية.
نظراً لأن الإدخال مرتب، فإن القيم المتساوية تقع بجوار بعضها البعض. احتفظ بالظهور الأول لكل قيمة وتخطَّ باقي التكرارات.
استخدم قائمة مترابطة لحل هذه المشكلة!
يجب عليك استخدام الفئة LinkedList (المتوفرة في linkedlist.<ext> جنباً إلى جنب مع node.<ext>) — لا تستخدم الميزات المدمجة في اللغة مثل عكس المصفوفات المدمج، أو التقطيع (slicing)، أو عمليات list المدمجة في stdlib لحساب النتيجة.
جرّب بنفسك
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "solution.h"
int main() {
char line[8192];
if (!fgets(line, sizeof(line), stdin)) line[0] = '\0';
int arr[4096];
int len = 0;
char* tok = strtok(line, " \t\r\n");
while (tok) { arr[len++] = atoi(tok); tok = strtok(NULL, " \t\r\n"); }
int rs = 0;
int* r = removeDuplicates(arr, len, &rs);
for (int idx = 0; idx < rs; idx++) {
if (idx > 0) printf(" ");
printf("%d", r[idx]);
}
printf("\n");
return 0;
}