Menu
Coddy logo textTech

Practice #3

Coddy'nin Çift Yönlü Bağlı Liste - Veri Yapıları Serisi #6 kursunda ders 12 / 14.

challenge icon

Görev

Kolay

Bir 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;
}

Çift Yönlü Bağlı Liste - Veri Yapıları Serisi #6 bölümündeki tüm dersler