طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 101 · تركيب البيانات والخوارزميات
تقييم الدرس 13

القائمة المترابطة

أجب عن الأسئلة ثم اضغط «صحّح ورقتي» في آخر الصفحة. ← العودة إلى الدرس

أسئلة التقييم

تقييم الدرس 13: القائمة المترابطة. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».

1السؤال الأول: اختر الإجابة الصحيحة

1) ماذا يطبع البرنامج؟
main.py
class Node:    def __init__(self, d):        self.data = d        self.next = Nonea = Node("أ")a.next = Node("ب")print(a.next.data)
2) آخر عقدة في القائمة يشير next فيها إلى:
3) ما الخطأ في ترتيب الأسطر لإضافة node في الأول؟
main.py
head = nodenode.next = head
4) أي عملية أسرع في القائمة المترابطة منها في list؟
5) عيب القائمة المترابطة في الذاكرة:

2السؤال الثاني: صح أم خطأ

1) عقد القائمة المترابطة يجب أن تكون متجاورة في الذاكرة.
الصواب: خطأ
2) حذف الرأس يكون بجعل head = head.next.
الصواب: صح
3) البحث في القائمة المترابطة O(log n).
الصواب: خطأ
4) حفظ مؤشر للذيل tail يجعل الإضافة في الآخر O(1).
الصواب: صح

3السؤال الثالث: أكمل الفراغات من القائمة المنسدلة

1) أول عقدة في القائمة المترابطة تسمى .
الإجابة: الرأس head
2) للمرور على القائمة نكرر: cur = .
الإجابة: cur.next
3) لحذف عقدة من الوسط: prev.next = .
الإجابة: cur.next

4السؤال الرابع: أسئلة عملية

1) ما ناتج البرنامج؟

main.py
class Node:    def __init__(self, data):        self.data = data        self.next = None class LinkedList:    def __init__(self):        self.head = None        self.size = 0     def push_front(self, data):          # O(1)        node = Node(data)        node.next = self.head        self.head = node        self.size += 1     def append(self, data):              # O(n): نمر حتى الآخر        node = Node(data)        if self.head is None:            self.head = node        else:            cur = self.head            while cur.next is not None:                cur = cur.next            cur.next = node        self.size += 1     def find(self, data):                # O(n)        cur, i = self.head, 0        while cur is not None:            if cur.data == data:                return i            cur, i = cur.next, i + 1        return -1     def remove(self, data):              # O(n)        prev, cur = None, self.head        while cur is not None:            if cur.data == data:                if prev is None:                    self.head = cur.next     # حذف الرأس                else:                    prev.next = cur.next     # تخطي العقدة                self.size -= 1                return True            prev, cur = cur, cur.next        return False     def to_list(self):        out, cur = [], self.head        while cur is not None:            out.append(cur.data)            cur = cur.next        return out lst = LinkedList()lst.append(5)lst.push_front(3)lst.append(8)lst.remove(5)print(lst.to_list(), lst.find(8))
الناتج الصحيح:
Shell×
[3, 8] 1
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس