Practice #1
الدرس 10 من 14 في دورة القائمة المترابطة المزدوجة - سلسلة هياكل البيانات #6 على Coddy.
التحدي
سهلاكتب دالة isPalindrome تستقبل مصفوفة من الأعداد الصحيحة arr (قيم قائمة مرتبطة بشكل مزدوج) وتعيد true إذا كانت تُقرأ بنفس الطريقة من الأمام والخلف، و false بخلاف ذلك.
استخدم قائمة مرتبطة بشكل مزدوج (doubly linked list) لحل هذه المشكلة! قم بتحريك مؤشر واحد من head للأمام ومؤشر آخر من tail للخلف؛ حيث يلتقيان في المنتصف.
يجب عليك استخدام فئة DoublyLinkedList (المتوفرة في doublylinkedlist.<ext> مع node.<ext>) — لا تستخدم الدوال المدمجة في اللغة مثل عكس المصفوفات (reverse)، أو التقطيع (slicing)، أو الفرز (sort)، أو عمليات القوائم في المكتبة القياسية (stdlib) لحساب النتيجة.
جرّب بنفسك
#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;
}