سلام دوستان! امروز میخوایم در مورد یه مفهوم خیلی مهم در دنیای کامپیوتر صحبت کنیم: پشته یا Stack. شاید اسمش یکم پیچیده به نظر برسه، ولی قول میدم خیلی سادهس. تصور کنید یه دسته بشقاب رو که روی هم چیدین. آخرین بشقابی که گذاشتین، اولین بشقابی هست که برمیدارین. پشته هم دقیقاً همینه!
به زبان ساده، پشته یک لیست مرتب شده از اطلاعاته که فقط از یه طرف میتونید بهش چیزی اضافه کنید (قرار دادن) یا چیزی بردارید (حذف کردن). این طرف رو معمولاً بالای پشته مینامند.
پشته دو عمل اصلی داره:
این روش کار، که آخرین ورودی، اولین خروجی هست (Last In, First Out یا LIFO) خصوصیت اصلی پشتهست.
فرض کنید میخوایم یه پشته درست کنیم و اعداد 1، 2 و 3 رو به ترتیب داخلش قرار بدیم. بعدش هم میخوایم اعداد رو از پشته خارج کنیم.
پشتهها کاربردهای خیلی زیادی در برنامهنویسی و علوم کامپیوتر دارند. چندتا از مهمترینهاش اینا هستن:
پشتهها رو میتونیم با استفاده از آرایهها یا لیستهای پیوندی پیادهسازی کنیم. در ادامه، یه مثال خیلی ساده از پیادهسازی پشته با استفاده از آرایه در پایتون رو میبینیم:
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
else:
return None # or raise an exception
def peek(self):
if not self.is_empty():
return self.items[-1]
else:
return None
def size(self):
return len(self.items)
# Example usage
s = Stack()
s.push(10)
s.push(20)
s.push(30)
print(s.pop()) # Output: 30
print(s.peek()) # Output: 20
print(s.size()) # Output: 2
توی این کد، از لیست `self.items` برای نگهداری عناصر پشته استفاده کردیم. تابع `push` عنصر رو به انتهای لیست اضافه میکنه (بالای پشته) و تابع `pop` عنصر آخر لیست رو حذف میکنه (از بالای پشته).
شاید با خودتون بگید پشته شبیه صف هست؟ خب، هم پشته و هم صف ساختارهای داده ای هستن که برای نگهداری مجموعه ای از عناصر استفاده می شن. اما تفاوت کلیدی در نحوه دسترسی به عناصر نهفته است. همونطور که گفتیم، پشته از اصل LIFO (آخرین ورودی، اولین خروجی) پیروی می کنه، در حالی که صف از اصل FIFO (اولین ورودی، اولین خروجی) پیروی می کنه. مثل اینه که پشته دسته بشقاب باشه، و صف، یک صف نونوایی!
ویژگی | پشته (Stack) | صف (Queue) |
---|---|---|
نحوه دسترسی به عناصر | آخرین ورودی، اولین خروجی (LIFO) | اولین ورودی، اولین خروجی (FIFO) |
عملکرد اصلی | Push (قرار دادن)، Pop (حذف کردن) | Enqueue (اضافه کردن)، Dequeue (حذف کردن) |
مثال | دسته بشقاب، Undo/Redo | صف نونوایی، صف پرینت |
پشته یک ساختار داده ای ساده ولی بسیار کاربردیه که از اصل LIFO پیروی میکنه. یادگیری این مفهوم خیلی مهم هست، چون در خیلی از قسمتهای برنامهنویسی و علوم کامپیوتر ازش استفاده میشه. امیدوارم این توضیحات ساده بهتون کمک کرده باشه تا پشته رو بهتر بشناسید. موفق باشین!
پشته، Stack، ساختمان داده، LIFO، Push، Pop، پایتون، برنامه نویسی
امتیاز شما به این مطلب
امتیاز: 5 از 5 (مجموع 1 رای)
اولین نفری باشید که در مورد این مقاله نظر می دهید!
techfeed.ir© 2024 All rights reserved