Practice #3
Leçon 12 sur 14 du cours Liste chaînée - Série sur les structures de données n°5 de Coddy.
Défi
FacileÉtant donné un tableau d'entiers trié arr (les valeurs d'une liste chaînée triée), écrivez une fonction removeDuplicates qui renvoie le tableau en ayant supprimé les doublons consécutifs.
Comme l'entrée est triée, les valeurs égales se trouvent les unes à côté des autres. Conservez la première occurrence de chaque valeur et ignorez le reste.
Utilisez une liste chaînée pour résoudre ce problème !
Vous devez utiliser la classe LinkedList (fournie dans linkedlist.<ext> avec node.<ext>) — n'utilisez pas de fonctionnalités intégrées du langage telles que l'inversion intégrée des tableaux, le découpage (slicing) ou les opérations sur les listes de la stdlib pour calculer le résultat.
Essayez vous-même
#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;
}