תרגול #3
שיעור 12 מתוך 14 בקורס רשימה מקושרת – סדרת מבני נתונים #5 של Coddy.
אתגר
קלבהינתן מערך של מספרים שלמים ממויין arr (הערכים של רשימה מקושרת ממוינת), כתבו פונקציה removeDuplicates שמחזירה את המערך לאחר הסרת כפילויות עוקבות.
מכיוון שהקלט ממויין, ערכים שווים נמצאים זה לצד זה. השאירו את ההופעה הראשונה של כל ערך ודלגו על השאר.
השתמשו ברשימה מקושרת כדי לפתור את הבעיה!
עליכם להשתמש במחלקה LinkedList (המסופקת בקובץ linkedlist.<ext> יחד עם node.<ext>) — אל תשתמשו בפעולות מובנות של השפה, כמו reverse מובנה למערכים, חיתוך או פעולות רשימה מהספרייה הסטנדרטית, כדי לחשב את התוצאה.
נסו בעצמכם
#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;
}
כל השיעורים ביחידה רשימה מקושרת – סדרת מבני נתונים #5
תרגלו בעצמכם: קומפיילר C אונליין