Practice #3
Coddy'nin Çift Yönlü Bağlı Liste - Veri Yapıları Serisi #6 kursunda ders 12 / 14.
Görev
KolayBir tam sayı dizisi arr (bir çift yönlü bağlı listenin değerleri) ve bir tam sayı k alan ve diziyi k pozisyon kadar sağa döndürülmüş şekilde döndüren bir rotateRight fonksiyonu yazın.
Eğer k dizinin uzunluğundan büyükse, sadece kalan önemlidir (n kadar döndürmek sizi başladığınız yere geri getirir). Eğer liste boşsa, boş bir dizi 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 operasyonları 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 = rotateRight(arr, len, n, &rs);
for (int idx = 0; idx < rs; idx++) {
if (idx > 0) printf(" ");
printf("%d", r[idx]);
}
printf("\n");
return 0;
}