Tutorial Struktur Data Tumpukan Python

Menerapkan tumpukan LIFO dengan Python. Jalankan contoh kode tumpukan interaktif kami untuk menguasai batas push, pop, peek, dan kapasitas.

Coba di Editor

Ikhtisar

Stack adalah struktur data linier yang mengikuti prinsip Last-In, First-Out (LIFO). Artinya, elemen terakhir yang ditambahkan ke tumpukan adalah elemen pertama yang dibuang, mirip dengan tumpukan pelat.

Tumpukan mendukung dua operasi utama: push (menambahkan item ke atas) dan pop (menghapus item yang paling baru ditambahkan). Selain itu, operasi mengintip atau atas memungkinkan pemeriksaan elemen atas tanpa melepasnya.

Dengan Python, tumpukan dapat dengan mudah dibuat menggunakan daftar dengan metode `.append()` dan `.pop()`, atau dengan menggunakan objek `collections.deque` yang menawarkan operasi antrian berujung ganda yang dioptimalkan dalam waktu O(1).

Kode & Output Eksekusi

Implementasi Stack khusus menggunakan struktur daftar Python untuk meniru fungsi push, pop, dan peek.

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}")
Keluaran Terminal
Pushed: Apples
Pushed: Bananas
Pushed: Cherries
Current Stack Size: 3
Top Element (Peek): Cherries
Popped: Cherries
Stack after Pop: ['Apples', 'Bananas']

Implementasi Langkah demi Langkah

  • Mengelola fungsi pembatalan dalam sistem perangkat lunak
  • Penguraian sintaksis dan pemeriksaan tanda kurung di kompiler
  • Melacak tumpukan panggilan eksekusi selama rekursi di mesin

Pertanyaan yang Sering Diajukan

Mengapa collections.deque lebih disukai daripada daftar normal untuk Stacks?

Meskipun daftar mudah digunakan, daftar tersebut merupakan array dinamis. Saat ukurannya diubah, realokasi memori dapat memakan waktu O(n). Objek deque menggunakan arsitektur daftar tertaut ganda, menjamin O(1) push dan pop.

Bisakah tumpukan meluap dengan Python?

Kelas tumpukan standar di Python yang menggunakan array daftar akan berkembang hingga menghabiskan semua memori sistem yang tersedia. Namun, tumpukan rekursi di Python memiliki batas default (biasanya 1000) untuk mencegah loop tak terbatas membuat interpreter mogok.

Topik Terkait