پشته (Stack)

پشته(Stack) یک ساختار داده بسیار سادست. استک، لیست با یه محدودیته. شما فقط با قسمت بالایی اون میتونین تعامل داشته باشین.

شما میتونین یه مقدار جدید به بالای پشته اضافه کنین(push)، یا مقدار موجود رو از پشته خارج کنین(pop).

میشه پشته‌ی بشقاب‌ها رو به عنوان یه تشبیه خوب معرفی کرد. شما میتونین یه بشقاب اضافه یا کم کنین. یک پشته هم به همین شکل کار میکنه.

پشته EVM، حداکثر ۱۰۲۴ عنصر جا داره. هر عنصر روی پشته، حداکثر یک مقدار ۲۵۶ بیتیه (۳۲ بایت).

MAXIMUM_STACK_SIZE = 1024

همچنین اگه سعی کنیم یه مقدار خالی رو(عنصری که وجود نداره) از پشته حذف کنیم، استثنا رخ میده.

class Stack:
    def __init__(self): self.items = []
    def __str__ (self): 
        ws = []
        for i, item in enumerate(self.items[::-1]):
            if   i == 0                : ws.append(f"{item} <first")
            elif i == len(self.items)-1: ws.append(f"{item} <last") 
            else                       : ws.append(str(item))
        return "\n".join(ws)
        
    def push(self, value): 
        if len(self.items) == MAXIMUM_STACK_SIZE-1: raise Exception("Stack overflow")
        self.items.append(value)    
    
    def pop(self, n=-1):
        if len(self.items) < n: raise Exception("Stack overflow")
        del self.items[n]

یه پشته میسازیم:

stack = Stack()

سه تا عنصر بهش اضافه می کنیم:

stack.push(2)
stack.push(4)
stack.push(1)

print(stack)
1 <اولی
4
2 <آخری

یه عنصر رو ازش حذف میکنیم که در واقع 1 ه.

stack.pop()

حالا فقط دو تا مقدار توی استکمون باقی مونده. توجه کنین که ما 1 و حذف کردیم و بالاترین عنصر 4 شده.

print(stack)
4 <اولی
2 <آخری
احساست در مورد این مقاله چیه؟