Practice #4
Coddy'nin Çift Yönlü Bağlı Liste - Veri Yapıları Serisi #6 kursunda ders 13 / 14.
Görev
KolayBir tam sayı dizisi arr (bir çift yönlü bağlı listenin değerleri) ve bir tam sayı value alan, value değerinin ilk geçtiği yeri bulan ve o düğümü listenin başına taşıyan bir moveToFront fonksiyonu yazın. Sonuç dizisini döndürün.
Eğer value listede yoksa, diziyi değiştirmeden döndürün.
Bu problemi çözmek için bir çift yönlü bağlı liste kullanın!
DoublyLinkedList sınıfını kullanmalısınız (node.<ext> ile birlikte doublylinkedlist.<ext> dosyasında sağlanmıştır) — sonucu hesaplamak için dizilerin ters çevrilmesi (reverse), dilimleme (slicing), sıralama (sort) veya standart kütüphane liste işlemleri gibi dile özgü yerleşik işlevleri kullanmayın.
Kendin dene
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "solution.h"
int main() {
char line1[8192];
char line2[64];
if (!fgets(line1, sizeof(line1), stdin)) line1[0] = '\0';
if (!fgets(line2, sizeof(line2), stdin)) line2[0] = '\0';
int arr[4096];
int len = 0;
char* tok = strtok(line1, " \t\r\n");
while (tok) { arr[len++] = atoi(tok); tok = strtok(NULL, " \t\r\n"); }
int n = atoi(line2);
int rs = 0;
int* r = moveToFront(arr, len, n, &rs);
for (int idx = 0; idx < rs; idx++) {
if (idx > 0) printf(" ");
printf("%d", r[idx]);
}
printf("\n");
return 0;
}