القائمة المترابطة في لغة البايثون - كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 | المادة: الذكاء الإصطناعي | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

الدرس: القائمة المترابطة في لغة البايثون

📚 معلومات الصفحة

الكتاب: كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 | المادة: الذكاء الإصطناعي | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

نوع المحتوى: درس تعليمي

مستوى الصعوبة: متوسط

📝 ملخص الصفحة

تشرح هذه الصفحة كيفية تنفيذ القوائم المترابطة في لغة البايثون، حيث لا توفر البايثون نوع بيانات مدمج لهذا الهيكل. يتم استخدام فئات البايثون لإنشاء القوائم المترابطة، مع التركيز على تعريف فئة العقدة (Node) التي تحتوي على البيانات ومؤشر للعقدة التالية.

يبدأ المحتوى بشرح مفهوم الفئة (Class) كقالب لإنشاء الكائنات، يلي ذلك مثال عملي لإنشاء عقدة واحدة باستخدام فئة Node، ثم إنشاء قائمة مترابطة تحتوي على عقدة واحدة باستخدام فئة LinkedList مع مؤشر الرأس.

يتضمن النص مثالاً مرئياً (شكل 1.32) يوضح قائمة مترابطة مكونة من ثلاث عقد تمثل أيام الأسبوع (الاثنين، الثلاثاء، الأربعاء)، مع أسهم تشير إلى التسلسل بين العقد. هذا يساعد في فهم كيفية ربط العقد عبر المؤشرات في هياكل البيانات.

📄 النص الكامل للصفحة

القائمة المترابطة في لغة البايثون Linked List in Pythonلا توفر لغة البايثون نوع بيانات محدد مسبقًا للقوائم المترابطة. عليك إنشاء نوع البيانات الخاص بك، أو استخدام مكتبات البايثون التي توفر تمثيلاً لهذا النوع من البيانات. لإنشاء قائمة مترابطة، استخدم فئات البايثون. في المثال الموضح بالشكل 1.32، ستنشئ قائمة مترابطة مكونة من ثلاث عقد، كل واحدة تضم يومًا من أيام الأسبوع.--- SECTION: الفئة (Class) --- الفئة (Class) : الفئة هي هيكل بيانات معرف بواسطة المستخدم، ويحتوي على أعضاء البيانات (السمات Properties)، والطرائق (السلوك Behavior) الخاصة بها. وتستخدم الفئات كقوالب لإنشاء الكائنات.شكل 1.32: مثال على القائمة المترابطة ستنشئ أولاً عقدة باستخدام الفئة.# single node class Node: def __init__(self, data, next=None): self.data = data # node data self.next = next # Pointer to the next node# Create a single node first = Node("Monday") print(first.data)Mondayالخطوة التالية هي إنشاء قائمة مترابطة تحتوي على عقدة واحدة، وهذه المرة ستستخدم مؤشر الرأس للإشارة إلى العقدة الأولى.# single node class Node: def __init__(self, data = None, next=None): self.data = data self.next = next# linked list with one head node class LinkedList: def __init__(self): self.head = None# list linked with a single node LinkedList1 = LinkedList() LinkedList1.head = Node("Monday") print(LinkedList1.head.data)Monday2023 - 1447--- VISUAL CONTEXT --- **DIAGRAM**: شكل 1.32: مثال على القائمة المترابطة Description: A diagram illustrating a linked list data structure. It shows three rectangular nodes, each containing a day of the week: 'Monday', 'Tuesday', and 'Wednesday'. Dashed arrows connect 'Monday' to 'Tuesday', and 'Tuesday' to 'Wednesday', indicating the 'next' pointer in the linked list sequence. The 'Wednesday' node has a small dot at its end, implying the end of the list. Key Values: Monday, Tuesday, Wednesday Context: This diagram visually represents the concept of a linked list, where each node (representing a day of the week) points to the next node in the sequence, as explained in the accompanying text and Python code examples.

🎴 بطاقات تعليمية للمراجعة

عدد البطاقات: 5 بطاقة لهذه الصفحة

ما هو التعريف الأساسي لـ "الفئة" (Class) في سياق لغات البرمجة مثل بايثون؟

الإجابة: الفئة هي هيكل بيانات معرف بواسطة المستخدم، يحتوي على أعضاء البيانات (السمات) والطرائق (السلوك)، وتستخدم كقالب لإنشاء الكائنات.

الشرح: الفئات تمثل المخططات أو القوالب التي نستخدمها لإنشاء كائنات لها خصائص وسلوكيات مشتركة. في هذا السياق، تُستخدم الفئة لتعريف بنية العقدة في القائمة المترابطة.

تلميح: فكر فيما تُستخدم فيه الفئة لتصنيع أشياء متشابهة.

كيف تتعامل لغة بايثون مع مفهوم "القائمة المترابطة" (Linked List)؟

الإجابة: لا توفر لغة بايثون نوع بيانات محدد مسبقًا للقوائم المترابطة، بل يتوجب على المبرمج إنشاء نوع البيانات الخاص به باستخدام الفئات (Classes) أو استخدام مكتبات خارجية.

الشرح: على عكس بعض اللغات التي قد توفر هياكل بيانات مدمجة، في بايثون، يتطلب إنشاء هياكل بيانات مركبة مثل القوائم المترابطة تعريف الفئات الخاصة بنا التي تحدد كيفية عمل هذه الهياكل.

تلميح: هل هناك نوع بيانات جاهز اسمه 'LinkedList' في بايثون مباشرة؟

ما هي المكونات الأساسية التي تتكون منها "عقدة" (Node) في القائمة المترابطة كما هو موضح في مثال بايثون؟

الإجابة: تتكون العقدة من جزأين رئيسيين: بيانات العقدة (data) ومؤشر (next) يشير إلى العقدة التالية في السلسلة.

الشرح: كل عقدة تحمل قيمة (البيانات) وتشير إلى مكان العقدة التالية، مما يسمح بربط العقد ببعضها البعض لتشكيل سلسلة القائمة المترابطة.

تلميح: ما الذي تحتويه كل "حلقة" في سلسلة القائمة المترابطة؟

اشرح دور "مؤشر الرأس" (head pointer) في تمثيل القائمة المترابطة.

الإجابة: مؤشر الرأس هو متغير يشير إلى العقدة الأولى في القائمة المترابطة، وهو نقطة البداية للوصول إلى باقي عناصر القائمة.

الشرح: بدون مؤشر الرأس، سيكون من المستحيل البدء في اجتياز القائمة المترابطة أو الوصول إلى أي من عقدها. إنه يحدد أين تبدأ القائمة.

تلميح: إذا أردت العثور على بداية أي شيء، فما الذي تبحث عنه أولاً؟

في المثال الموضح، ما هو الدور الذي تلعبه كل عقدة عند تمثيل أيام الأسبوع في القائمة المترابطة؟

الإجابة: تمثل كل عقدة يوماً محدداً من أيام الأسبوع (مثل 'Monday', 'Tuesday', 'Wednesday')، ويشير مؤشر العقدة إلى اليوم التالي في الترتيب الزمني.

الشرح: يستخدم المثال أيام الأسبوع كبيانات لتوضيح كيف يمكن تخزين معلومات مختلفة في العقد، وكيف تربط هذه العقد ببعضها البعض لتشكيل تسلسل منطقي (ترتيب الأيام).

تلميح: فكر في شكل البيانات داخل كل صندوق في الرسم البياني.