پشته (Stack)

پشته با اصل LIFO: عملیات push و pop، پیاده‌سازی، کاربردهای واقعی مثل Undo و فراخوانی توابع و پرانتزهای تو در تو

پشته چیست؟

پشته (Stack) ساختاری است که فقط از یک انته (بالا) اجازه ورود و خروج می‌دهد؛ به همین اصل LIFO (Last In, First Out — آخرین وارد، اولین خارج) معروف است.

مثل بشقاب‌های روی هم: آخرین بشقابی که گذاشته‌اید، اولین بشقابی است که برمی‌دارید.

عملیات اصلی

عملیاتپیچیدگیتوضیح
pushO(1)گذاشتن روی پشته
popO(1)برداشتن از بالای پشته
peek/topO(1)دیدن بالای پشته بدون برداشتن
is_emptyO(1)خالی بودن

پیاده‌سازی

ساده‌ترین راه در پایتون، استفاده از list است:

stack = []
stack.append(10)   # push
top = stack.pop()  # pop
top = stack[-1]    # peek

کاربردهای واقعی پشته

مثال کلاسیک: بررسی پرانتزها

رشته "{[()]}" معتبر است اما "([)]" نه. الگوریتم:

  1. پرانتز باز → push
  2. پرانتز بسته → pop و بررسی تطابق
  3. در پایان، پشته باید خالی باشد

پشته با لیست پیوندی

پشته را می‌توان با آرایه (ساده) یا لیست پیوندی (درج/حذف ابتدا O(1)) ساخت. هر دو عملیات پشته را O(1) می‌دهند؛ آرایه ساده‌تر و cache-friendlyتر است.

هشدار: pop روی پشته خالی خطا می‌دهد! همیشه قبل از pop با is_empty چک کنید یا از try/except استفاده کنید.

جمع‌بندی

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

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