Menu
Coddy logo textTech

תרגול מס׳ 1

שיעור 10 מתוך 14 בקורס רשימה מקושרת דו-כיוונית – סדרת מבני נתונים מס׳ 6 של Coddy.

challenge icon

אתגר

קל

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

השתמשו ברשימה מקושרת דו־כיוונית כדי לפתור את הבעיה! העבירו מצביע אחד מ־head קדימה ומצביע אחר מ־tail אחורה; הם נפגשים באמצע.

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

נסו בעצמכם

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "solution.h"

int main() {
    char line[8192];
    if (!fgets(line, sizeof(line), stdin)) line[0] = '\0';
    int arr[4096];
    int len = 0;
    char* tok = strtok(line, " \t\r\n");
    while (tok) { arr[len++] = atoi(tok); tok = strtok(NULL, " \t\r\n"); }
    int r = isPalindrome(arr, len);
printf("%s\n", r ? "true" : "false");
    return 0;
}

כל השיעורים ביחידה רשימה מקושרת דו-כיוונית – סדרת מבני נתונים מס׳ 6

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