لیست‌های پیوندی (Linked Lists)

لیست پیوندی: گره‌ها و اشاره‌گرها، انواع singly و doubly، پیاده‌سازی کامل و مقایسه با آرایه

لیست پیوندی چیست؟

لیست پیوندی (Linked List) زنجیره‌ای از گره‌ها (Node) است؛ هر گره داده + آدرس گره بعدی را نگه می‌دارد. برخلاف آرایه، خانه‌ها پشت‌سرهم نیستند و با اشاره‌گر به هم وصل‌اند.

[داده | بعدی] -> [داده | بعدی] -> [داده | None]
   head                                    tail

مثل گنجینه: هر برگه یک سرنخ دارد که می‌گوید سرنخ بعدی کجاست. برای رسیدن به گره ۵۰ام باید از اول بروید!

انواع لیست پیوندی

پیاده‌سازی گره

class Node:
    def __init__(self, data):
        self.data = data      # داده
        self.next = None      # اشاره‌گر به گره بعدی

عملیات و پیچیدگی‌ها

عملیاتپیچیدگیتوضیح
دسترسی به گره iامO(n)باید از head قدم‌به‌قدم رفت
جستجوO(n)پیمایش ترتیبی
درج در ابتداO(1)فقط دو اشاره‌گر عوض می‌شود!
حذف با اشاره‌گر به گره قبلیO(1)اتصال را دور می‌زنیم

مقایسه آرایه و لیست پیوندی

ویژگیآرایهلیست پیوندی
دسترسی اندیسیO(1) ✓O(n)
درج/حذف ابتداO(n)O(1) ✓
حافظهفشردهسربار اشاره‌گر
محلیتی حافظه (Cache)عالی ✓ضعیف
اندازهثابت (یا کپی در پویا)رشد نرم ✓

کجا لیست پیوندی می‌درخشد؟

نکته: در پایتون، collections.deque در واقع لیست پیوندی + آرایه ترکیبی است و append/pop از هر دو طرف O(1) دارد — برای صف و پشته ایده‌آل!

تکنیک‌های رایج لیست پیوندی

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل ساختار داده و الگوریتم است.

ابزارهای مرتبط