Python Yığın Veri Yapısı Eğitimi
Python'da bir LIFO yığını uygulayın. Push, pop, peek ve kapasite sınırlarında uzmanlaşmak için etkileşimli yığın kodu örneğimizi çalıştırın.
Genel Bakış
Yığın, Son Giren İlk Çıkar (LIFO) ilkesini izleyen doğrusal bir veri yapısıdır. Bu, plaka yığınına benzer şekilde, yığına eklenen son öğenin, çıkarılacak ilk öğe olduğu anlamına gelir.
Yığın iki ana işlemi destekler: itme (en üste bir öğe ekler) ve pop (en son eklenen öğeyi kaldırır). Ek olarak, bir göz atma veya üstten çalıştırma işlemi, üst elemanı çıkarmadan incelemeye olanak tanır.
Python'da yığınlar, '.append()' ve '.pop()' yöntemleriyle bir liste kullanılarak veya O(1) zamanında optimize edilmiş çift uçlu kuyruk işlemleri sunan 'collections.deque' nesnesi kullanılarak kolayca oluşturulabilir.
Kod ve Yürütme Çıkışı
Push, pop ve peek işlevlerini taklit etmek için Python'un liste yapısını kullanan özel bir Stack uygulaması.
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def push(self, item):
self.items.append(item)
print(f"Pushed: {item}")
def pop(self):
if self.is_empty():
return "Underflow: Stack is empty"
popped = self.items.pop()
print(f"Popped: {popped}")
return popped
def peek(self):
if self.is_empty():
return "Stack is empty"
return self.items[-1]
def size(self):
return len(self.items)
# Initialize stack
stack = Stack()
stack.push("Apples")
stack.push("Bananas")
stack.push("Cherries")
print(f"Current Stack Size: {stack.size()}")
print(f"Top Element (Peek): {stack.peek()}")
stack.pop()
print(f"Stack after Pop: {stack.items}")Pushed: Apples
Pushed: Bananas
Pushed: Cherries
Current Stack Size: 3
Top Element (Peek): Cherries
Popped: Cherries
Stack after Pop: ['Apples', 'Bananas']Adım Adım Uygulama
- Yazılım sistemlerinde geri alma işlevlerini yönetme
- Derleyicilerde sözdizimi ayrıştırma ve parantez kontrolü
- Motorlarda özyineleme sırasında yürütme çağrı yığınlarını izleme
Sıkça Sorulan Sorular
Neden koleksiyonlar.deque Stacks için normal bir listeye tercih ediliyor?
Listeler kullanışlı olmakla birlikte, bunlar aslında dinamik dizilerdir. Yeniden boyutlandırıldıklarında belleğin yeniden tahsisi O(n) zaman alabilir. Deque nesnesi, O(1) itme ve çıkarma işlemlerini garanti eden çift bağlı liste mimarisini kullanır.
Python'da yığınlar taşabilir mi?
Python'da liste dizilerini kullanan standart bir yığın sınıfı, mevcut tüm sistem belleğini tüketene kadar büyüyecektir. Ancak Python'daki özyineleme yığınının, sonsuz döngülerin yorumlayıcıyı çökertmesini önlemek için varsayılan bir sınırı (genellikle 1000) vardır.
İlgili Konular
Python'da FIFO kuyruk operasyonlarında uzmanlaşın. Kuyruğa alma ve kuyruktan çıkarma yöntemlerini gösteren etkileşimli kuyruk örneğimizi yürütün ve çalıştırın.
Python Tek Bağlantılı Liste UygulamasıPython'da tek bağlantılı listenin nasıl uygulanacağını öğrenin. Dinamik bellek ayırmayı, düğüm işlemlerini, eklemeyi, geçişi ve silmeyi keşfedin.