Stack

Stack adalah struktur data yang mengikuti prinsip LIFO (Last In, First Out), dimana elemen terakhir yang dimasukkan akan menjadi elemen pertama yang diambil.





















Penjelasan Sintaks Stack

  1. __init__: Metode konstruktor untuk menginisialisasi stack dengan list kosong.
  2. is_empty: Memeriksa apakah stack kosong.
  3. push: Menambahkan elemen ke atas stack.
  4. pop: Menghapus dan mengembalikan elemen teratas dari stack. Mengembalikan None jika stack kosong.
  5. peek: Mengembalikan elemen teratas dari stack tanpa menghapusnya. Mengembalikan None jika stack kosong.
  6. size: Mengembalikan jumlah elemen dalam stack.

Queue

Queue adalah struktur data yang mengikuti prinsip FIFO (First In, First Out), dimana elemen pertama yang dimasukkan akan menjadi elemen pertama yang diambil.

Implementasi Queue




Penjelasan Sintaks Queue

  1. __init__: Metode konstruktor untuk menginisialisasi queue dengan list kosong.
  2. is_empty: Memeriksa apakah queue kosong.
  3. enqueue: Menambahkan elemen ke belakang queue (dengan menggunakan insert pada posisi 0).
  4. dequeue: Menghapus dan mengembalikan elemen terdepan dari queue. Mengembalikan None jika queue kosong.
  5. size: Mengembalikan jumlah elemen dalam queue.
Contoh Penerapan Stack: Tumpukan piring
Implementasi Stack untuk tumpukan piring

class PiringStack:
    def __init__(self):
        self.items = []

    def is_empty(self):
        return self.items == []

    def taruh_piring(self, piring):
        self.items.append(piring)
        print(f"Piring {piring} ditaruh.")

    def ambil_piring(self):
        if not self.is_empty():
            piring = self.items.pop()
            print(f"Piring {piring} diambil.")
            return piring
        else:
            print("Tidak ada piring yang bisa diambil.")
            return None

    def lihat_piring_teratas(self):
        if not self.is_empty():
            return self.items[-1]
        else:
            return None

    def jumlah_piring(self):
        return len(self.items)

# Contoh penggunaan PiringStack
tumpukan_piring = PiringStack()
tumpukan_piring.taruh_piring("Piring A")
tumpukan_piring.taruh_piring("Piring B")
tumpukan_piring.taruh_piring("Piring C")
print("Piring teratas:", tumpukan_piring.lihat_piring_teratas())  # Output: Piring teratas: Piring C
tumpukan_piring.ambil_piring()  # Output: Piring Piring C diambil.
print("Jumlah piring:", tumpukan_piring.jumlah_piring())  # Output: Jumlah piring: 2

Implementasi Queue untuk Antrian Supermarket

class AntrianSupermarket:
    def __init__(self):
        self.items = []

    def is_empty(self):
        return self.items == []

    def masuk_antrian(self, orang):
        self.items.insert(0, orang)
        print(f"{orang} masuk antrian.")

    def keluar_antrian(self):
        if not self.is_empty():
            orang = self.items.pop()
            print(f"{orang} keluar antrian.")
            return orang
        else:
            print("Tidak ada orang di antrian.")
            return None

    def jumlah_antrian(self):
        return len(self.items)

# Contoh penggunaan AntrianSupermarket
antrian = AntrianSupermarket()
antrian.masuk_antrian("Orang A")
antrian.masuk_antrian("Orang B")
antrian.masuk_antrian("Orang C")
print("Jumlah orang di antrian:", antrian.jumlah_antrian())
antrian.keluar_antrian()  # Output: Orang A keluar antrian.
print("Jumlah orang di antrian setelah satu keluar:", antrian.jumlah_antrian())

Penjelasan Sintaks:

  1. Stack (Tumpukan Piring)

    • taruh_piring: Menambah piring ke tumpukan (push).
    • ambil_piring: Mengambil piring teratas dari tumpukan (pop).
    • lihat_piring_teratas: Melihat piring teratas tanpa mengambilnya (peek).
    • jumlah_piring: Menghitung jumlah piring dalam tumpukan.
  2. Queue (Antrian di Supermarket)

    • masuk_antrian: Menambah orang ke antrian (enqueue).
    • keluar_antrian: Mengeluarkan orang pertama dari antrian (dequeue).
    • jumlah_antrian: Menghitung jumlah orang dalam antrian.
































Komentar

Postingan populer dari blog ini

Algoritma deskriptif,flowchart dan pseudocode