Practice #3
Leçon 12 sur 14 du cours Liste chaînée - Série 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 retourne le tableau avec les doublons consécutifs supprimés.
Parce que l'entrée est triée, les valeurs égales se trouvent les unes à côté des autres. Gardez la première occurrence de chaque valeur et ignorez les autres.
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 les fonctions intégrées du langage comme l'inversion de tableaux, le découpage (slicing) ou les opérations de liste de la bibliothèque standard (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;
}