Practice #3
Coddy'nin Bağlı Liste - Veri Yapıları Serisi #5 kursunda ders 12 / 14.
Görev
KolaySıralanmış bir tam sayı dizisi arr (sıralı bir bağlı listenin değerleri) verildiğinde, ardışık kopyaları kaldırılmış diziyi döndüren bir removeDuplicates fonksiyonu yazın.
Girdi sıralı olduğu için eşit değerler yan yana bulunur. Her değerin ilk örneğini tutun ve geri kalanını atlayın.
Bu problemi çözmek için bir bağlı liste kullanın!
LinkedList sınıfını kullanmalısınız (node.<ext> ile birlikte linkedlist.<ext> dosyasında sağlanmıştır) — sonucu hesaplamak için dizilerin yerleşik ters çevirme, dilimleme veya standart kütüphane liste işlemleri gibi dile özgü yerleşik özellikleri kullanmayın.
Kendin dene
#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;
}