Menu
Coddy logo textTech

תרגול #5

שיעור 14 מתוך 14 בקורס רשימה מקושרת – סדרת מבני נתונים #5 של Coddy.

challenge icon

אתגר

קל

בהינתן מערך של מספרים שלמים arr (הערכים של רשימה מקושרת) ומספר שלם חיובי n, כתבו פונקציה nthFromEnd שמחזירה את הערך של הצומת ה־n מהסוף (אינדקס שמתחיל ב־1).

אם n מחוץ לטווח (אפס, שלילי או גדול מאורך הרשימה), החזירו -1.

השתמשו ברשימה מקושרת כדי לפתור את הבעיה! הטריק הקלאסי של שני מצביעים מייתר מעבר לספירת האורך.

חובה להשתמש במחלקה LinkedList (שמסופקת בקובץ linkedlist.<ext> יחד עם node.<ext>) — אל תשתמשו בפונקציות מובנות של השפה, כגון reverse מובנה של מערכים, חיתוך או פעולות רשימה מהספרייה הסטנדרטית, כדי לחשב את התוצאה.

נסו בעצמכם

#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 = nthFromEnd(arr, len, n);
printf("%d\n", r);
    return 0;
}

כל השיעורים ביחידה רשימה מקושרת – סדרת מבני נתונים #5

תרגלו בעצמכם: קומפיילר C אונליין