Menu
Coddy logo textTech

Practice #3

Lektion 12 von 14 im Kurs Doppelt verkettete Liste - Datenstrukturen-Serie #6 von Coddy.

challenge icon

Aufgabe

Einfach

Schreiben Sie eine Funktion rotateRight, die ein Ganzzahl-Array arr (die Werte einer doppelt verketteten Liste) und eine Ganzzahl k erhält und das Array um k Positionen nach rechts rotiert zurückgibt.

Wenn k größer als die Länge ist, zählt nur der Rest (eine Rotation um n bringt Sie zurück zum Ausgangspunkt). Wenn die Liste leer ist, geben Sie ein leeres Array zurück.

Verwenden Sie eine doppelt verkettete Liste, um dieses Problem zu lösen!

Sie müssen die Klasse DoublyLinkedList verwenden (bereitgestellt in doublylinkedlist.<ext> zusammen mit node.<ext>) — verwenden Sie keine in der Sprache eingebauten Funktionen wie das Umkehren von Arrays, Slicing, Sortieren oder Standardbibliotheks-Listenoperationen, um das Ergebnis zu berechnen.

Probier es selbst

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

Alle Lektionen in Doppelt verkettete Liste - Datenstrukturen-Serie #6