مقایسه ساختارهای خطی
مقایسه جامع آرایه، لیست پیوندی، پشته، صف و جدول هش + راهنمای انتخاب ساختار مناسب برای هر مسئله
جمعبندی ساختارهای خطی
تا اینجا پنج ساختار خطی را شناختیم. وقت آن است که آنها را کنار هم بگذاریم و یاد بگیریم برای هر مسئله، کدام را انتخاب کنیم.
جدول جامع پیچیدگیها
| عملیات | آرایه | لیست پیوندی | پشته | صف | جدول هش |
|---|---|---|---|---|---|
| دسترسی با اندیس | O(1) ✓ | O(n) | فقط بالا | فقط جلو | — |
| جستجو | O(n) | O(n) | O(n) | O(n) | O(1) ✓ |
| درج | O(n) وسط | O(1) ابتدا ✓ | O(1) بالا | O(1) انتها | O(1) ✓ |
| حذف | O(n) وسط | O(1) با قبلی ✓ | O(1) بالا | O(1) جلو | O(1) ✓ |
شخصیت هر ساختار
- آرایه: «کتابخانهدار منظم» — دسترسی فوری با شماره، اما جابهجایی کتابها کابوس
- لیست پیوندی: «زنجیره سرنخ» — افزودن/حذف سرنخ آسان، اما رسیدن به سرنخ ۵۰ام طولانی
- پشته: «بشقابها» — فقط آخرین کار مهم است (Undo)
- صف: «نانوایی» — عدالت ترتیبی (FIFO)
- جدول هش: «کمد برچسبدار» — با اسم مستقیم پیدا میکنی
راهنمای انتخاب
| اگر مسئله این است... | انتخاب |
|---|---|
| دسترسی سریع با موقعیت | آرایه |
| درج/حذف مکرر در ابتدا | لیست پیوندی / deque |
| برگرداندن آخرین عمل (Undo/Back) | پشته |
| پردازش به ترتیب ورود (نوبت) | صف |
| جستجوی سریع با کلید | جدول هش (dict) |
| شمارش/بررسی عضویت | جدول هش (set) |
ترکیب ساختارها
در دنیای واقعی، ساختارها را ترکیب میکنیم:
- LRU Cache = جدول هش + لیست پیوندی دوطرفه
- گراف = جدول هش از لیستها (لیست همسایگی)
- صف اولویتدار = هیپ (مبحث آینده)
نکته مصاحبهای: قبل از کدنویسی، از خودتان بپرسید «کدام عملیات بیشتر انجام میشود؟» — پاسخ این سؤال، ساختار درست را انتخاب میکند.
تمرین انتخاب
- تاریخچه ویرایشگر متن ← پشته
- سیستم نوبتدهی کلینیک ← صف
- دفترچه تلفن (جستجو با نام) ← جدول هش
- ماتریس تصویر ← آرایه دوبعدی
- پخشکننده موسیقی (افزودن آهنگ بعدی در ابتدا) ← لیست پیوندی
جمعبندی
- هیچ ساختاری همهکاره نیست؛ هر کدام قهرمان عملیات خودش است
- آرایه: دسترسی / پیوندی: درجحذف / پشته: LIFO / صف: FIFO / هش: جستجو
- تحلیل الگوی عملیات مسئله = کلید انتخاب درست
این مبحث بخشی از دوره آموزش کامل ساختار داده و الگوریتم است.