رفتن به محتوای اصلی
برنامه‌سازی پیشرفته با پایتون درس‌نامهٔ آزاد
مثال متوسط ۱۵ دقیقه

لیست پیوندی از صفر

لیست پیوندی بساز که آخرش اضافه کند، عضوی را پیدا کند و طولش O(1) نباشد — بعد توضیح بده چرا.

صورت مسئله

لیست پیوندی بساز که آخرش اضافه کند، عضوی را پیدا کند و طولش O(1) نباشد — بعد توضیح بده چرا.

مثال حل‌شده

لیست پیوندی

متوسط

صورت مسئله

سه عدد ۱۰، ۲۰، ۳۰ را اضافه کن، ۲۰ را پیدا کن، و بگو دسترسی به عنصر iام چه هزینه‌ای دارد.

راه‌حل گام‌به‌گام

    ۴ گام باقی مانده
    class Node:
        def __init__(self, value, nxt=None):
            self.value = value
            self.next = nxt
    
    class LinkedList:
        def __init__(self):
            self.head = None
    
        def append(self, value):
            if self.head is None:
                self.head = Node(value)
                return
            cur = self.head
            while cur.next is not None:
                cur = cur.next
            cur.next = Node(value)
    
        def find(self, value):
            cur = self.head
            while cur is not None:
                if cur.value == value:
                    return cur
                cur = cur.next
            return None
    
    ll = LinkedList()
    for v in (10, 20, 30):
        ll.append(v)
    print(ll.find(20).value)  # 20
    print(ll.find(99))        # None

    مطالب مرتبط

    از همین بخش و با برچسب‌های مشترک

    این مطلب را خواندید؟ آن را علامت بزنید تا پیشرفت شما روی همین دستگاه ذخیره شود.

    وضعیت پیشرفت برای لیست پیوندی از صفر