Menu
Coddy logo textTech

Practice #3

Leçon 12 sur 14 du cours Liste doublement chaînée - Série Structures de données n°6 de Coddy.

challenge icon

Défi

Facile

Écrivez une fonction rotateRight qui reçoit un tableau d'entiers arr (les valeurs d'une liste doublement chaînée) et un entier k, et renvoie le tableau effectuant une rotation à droite de k positions.

Si k est plus grand que la longueur, seul le reste compte (une rotation de n vous ramène à votre point de départ). Si la liste est vide, renvoyez un tableau vide.

Utilisez une liste doublement chaînée pour résoudre ce problème !

Vous devez utiliser la classe DoublyLinkedList (fournie dans doublylinkedlist.<ext> avec node.<ext>) — n'utilisez pas les fonctions intégrées du langage comme l'inversion de tableaux (reverse), le découpage (slicing), le tri (sort) ou les opérations de liste de la bibliothèque standard (stdlib) pour calculer le résultat.

Essayez vous-même

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

Toutes les leçons de Liste doublement chaînée - Série Structures de données n°6