Practice #3
Lección 12 de 14 del curso Listas enlazadas - Serie de estructuras de datos n.º 5 de Coddy.
Desafío
FácilDado un arreglo de enteros ordenado arr (los valores de una lista enlazada ordenada), escribe una función removeDuplicates que devuelva el arreglo sin los duplicados consecutivos.
Dado que la entrada está ordenada, los valores iguales están contiguos. Conserva la primera aparición de cada valor y omite el resto.
¡Utiliza una lista enlazada para resolver este problema!
Debes usar la clase LinkedList (proporcionada en linkedlist.<ext> junto con node.<ext>); no utilices elementos integrados del lenguaje como la inversión integrada de arreglos, slicing o funciones de stdlib para listas para calcular el resultado.
Pruébalo tú mismo
#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;
}