Menu
Coddy logo textTech

Practice #2

Leçon 11 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 sumLastN qui reçoit un tableau d'entiers arr (les valeurs d'une liste doublement chaînée) et un entier positif n, et retourne la somme des n derniers éléments.

Si n est plus grand que la liste, calculez la somme de toute la liste. Si n est égal à zéro ou négatif, retournez 0.

Utilisez une liste doublement chaînée pour résoudre ce problème ! Commencez par le tail et revenez en arrière de n étapes.

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, le découpage (slicing), le tri ou les opérations de liste de la bibliothèque standard 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 r = sumLastN(arr, len, n);
printf("%d\n", r);
    return 0;
}

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