תרגול מס׳ 1
שיעור 10 מתוך 14 בקורס רשימה מקושרת דו-כיוונית – סדרת מבני נתונים מס׳ 6 של Coddy.
אתגר
קלכתבו פונקציה 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
2פרויקט רשימה מקושרת כפולה
מחלקת Nodeמחלקת DoublyLinkedListתרגלו בעצמכם: קומפיילר C אונליין