تقييم الدرس 13
القائمة المترابطة
أجب عن الأسئلة ثم اضغط «صحّح ورقتي» في آخر الصفحة. ← العودة إلى الدرس
أسئلة التقييم
تقييم الدرس 13: القائمة المترابطة. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».
1السؤال الأول: اختر الإجابة الصحيحة
1) ماذا يطبع البرنامج؟
class Node: def __init__(self, d): self.data = d self.next = Nonea = Node("أ")a.next = Node("ب")print(a.next.data)
2) آخر عقدة في القائمة يشير
next فيها إلى:3) ما الخطأ في ترتيب الأسطر لإضافة
node في الأول؟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) ما ناتج البرنامج؟
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
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».