📄 النص الكامل للصفحة
أضف الآن المزيد من العقد إلى القائمة المترابطة.# single node class Node:
def __init__(self, data = None, next=None):
self.data = data self.next = next# an empty linked list with a head node.
class LinkedList:
def __init__(self):
self.head = None# the main program linked_list = LinkedList()
# the first node linked_list.head = Node("Monday")
# the second node linked_list.head.next = Node("Tuesday")
# the third node linked_list.head.next.next = Node("Wednesday")# print the linked list node = linked_list.head while node:
print (node.data)
node = node.nextتُستخدم عبارة while للانتقال من عقدة إلى أخرى.Monday Tuesday Wednesdayإضافة العقدة إلى القائمة المترابطة
Add a Node to a Linked Listلتتمكن من إضافة عقدة جديدة، اتبع الخطوات التالية:
• يجب أن يشير مؤشر العقدة الأولى إلى عنوان العقدة الجديدة، حتى تصبح العقدة الجديدة هي العقدة الثانية.
• يجب أن يشير مؤشر العقدة الجديدة (الثانية) إلى عنوان العقدة الثالثة.
• بهذه الطريقة، لن تحتاج إلى تغيير العناصر عند إضافة عنصر جديد في المنتصف. تقتصر العملية على تغيير قيم العناوين في العقدة التي تسرع من عملية الإضافة في حالة القوائم المترابطة، مقارنة بحالة القوائم المتسلسلة.--- SECTION: مثال: --- لديك قائمة مترابطة من عنصرين: 12 و 99، وتريد إدراج العنصر 37 كعنصر ثانٍ بالقائمة. في النهاية، سيكون لديك قائمة من ثلاثة عناصر: 12 و 37 و 99.1. أنشئ العقدة الجديدة.
2. اربط العقدة 37 بالعقدة 99.
3. اربط العقدة 12 بالعقدة 37. (تمت إضافة العقدة الجديدة).2025 - 1447--- VISUAL CONTEXT ---
**DIAGRAM**: Untitled Description: A diagram showing two linked list nodes. The first node contains the value 12 and is labeled 'node'. It points to the second node, which contains the value 99 and is labeled 'node.next'. The connection is represented by a dashed arrow.
Key Values: node: 12, node.next: 99
Context: Illustrates the initial state of a linked list with two elements before insertion.**DIAGRAM**: Untitled Description: A diagram showing a single, isolated linked list node containing the value 37. It is accompanied by a circled number '1', indicating the first step of the insertion process.
Key Values: new node: 37
Context: Illustrates the creation of a new node (step 1) to be inserted into the linked list.**DIAGRAM**: Untitled Description: A diagram illustrating the insertion of node 37 between node 12 and node 99. Node 12 (labeled 'node') points to node 37 (labeled 'node.next') via an arrow labeled with a circled '3'. Node 37 then points to node 99 (labeled 'node.next.next') via an arrow labeled with a circled '2'.
Key Values: node: 12, node.next: 37, node.next.next: 99
Context: Illustrates the final state of the linked list after inserting node 37, showing how pointers are updated (steps 2 and 3).
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 4 بطاقة لهذه الصفحة
ما هو دور العقدة الأولى (head) في القائمة المترابطة؟
الإجابة: تشير العقدة الأولى (head) إلى بداية القائمة المترابطة، وهي أول عنصر يتم الوصول إليه.
الشرح: في القوائم المترابطة، يتم استخدام متغير 'head' للإشارة إلى موقع أول عقدة في القائمة، مما يتيح التنقل والوصول إلى بقية العناصر.
تلميح: فكر في ما هي نقطة البداية لأي قائمة أو سلسلة.
ما هو الغرض من متغير 'next' داخل عقدة القائمة المترابطة؟
الإجابة: يشير متغير 'next' داخل العقدة إلى عنوان العقدة التالية في التسلسل، مما يتيح الربط بين العقد والانتقال عبر القائمة.
الشرح: يحتوي كل مؤشر 'next' على عنوان الذاكرة الخاص بالعقدة التالية. إذا كان 'next' يساوي None، فهذا يعني أن العقدة الحالية هي العقدة الأخيرة في القائمة.
تلميح: تخيل أن كل عقدة هي مرحلة، وماذا تحتاج كل مرحلة لمعرفة المرحلة التالية؟
اذكر الخطوات الأساسية لربط عقدة جديدة بالعقدة الثانية في قائمة مترابطة موجودة بالفعل.
الإجابة: 1. يجب أن يشير مؤشر العقدة الأولى (head) إلى عنوان العقدة الجديدة. 2. يجب أن يشير مؤشر العقدة الجديدة إلى عنوان العقدة الثالثة (التي كانت في الأصل العقدة الثانية).
الشرح: هذه العملية تضمن عدم فقدان أي جزء من القائمة الأصلية. يتم تحديث المؤشرات لدمج العقدة الجديدة بسلاسة في التسلسل.
تلميح: فكر في كيفية الحفاظ على تسلسل القائمة عند إدخال عنصر جديد في المنتصف.
لماذا تعتبر عملية الإضافة في القوائم المترابطة أسرع مقارنة بالقوائم المتسلسلة عند إضافة عنصر في المنتصف؟
الإجابة: لأنها تقتصر على تغيير قيم العناوين (المؤشرات) في العقد المجاورة للعنصر الجديد، بدلاً من إعادة ترتيب جميع العناصر التي تليه كما يحدث في القوائم المتسلسلة.
الشرح: في القوائم المتسلسلة، قد يتطلب إدخال عنصر جديد في المنتصف إزاحة جميع العناصر اللاحقة لتوفير مساحة، بينما في القوائم المترابطة، نحتاج فقط لتعديل مؤشرات عقدتين.
تلميح: قارن بين ماذا تحتاج لتغييره في كل بنية بيانات عندما تضيف عنصراً جديداً.