Modul 7 : Stack - fzl-22/modul-alstrukdat-sainsdata GitHub Wiki
1. Pendahuluan
Data type adalah jenis data yang digunakan di program komputer dan terdiri dari kumpulan aksi/operasi untuk memanipulasi nilai dari jenis data tersebut. Contohnya adalah integer dan float. Data type yang merupakan bawaan dari bahasa pemrograman disebut primitive data type
dan memiliki ukuran memori yang tetap.
Primitive data type
di Python dibagi menjadi 2 yaitu simple data type
dan complex data type`.
Simple data type
adalah data yang hanya bisa menyimpan satu nilai saja dan tidak bisa dipecah lagi menjadi bagian yang lebih kecil -> Contohsimple data type
adalah integer, float(bilangan real), Boolean.Complex data type
adalah data yang bisa menyimpan lebih dari satu nilai dan tersusun dari beberapa simple data type
ataucomplex data type lainnya. -> Contoh
complex data type` adalah list, array, dictionary, string, object, dll
Terkadang dengan menggunakan primitive data type
saja tidak cukup untuk menyelesaikan masalah tertentu di bidang pemrograman. Pada umumnya, bahasa pemrograman mengizinkan pembuatan jenis data tambahan yang biasanya dikenal dengan user-defined-type yang diubat oleh programmer dan bukan merupakan jenis data bawaan dari bahasa pemrograman itu sendiri.
2. Abstract Data Type
Untuk Membantu menyelesaikan suatu masalah yang kompleks, seorang programmer akan menggunakan abstraction. Abstraction adalah mekanisme untuk membatasi sifat sifat, aksi/operasi yang dilakukan pada sebuah object tersebut terhadap hal-hal/konteks yang relevan yang kita inginkan.
- Mengaplikasikan konsep abstraction pada desain struktur data akan menghasilkan abstract data types (ADT).
- Abstract data type (ADT) atau tipe data abstrak merupakan model matematika yang merujuk pada sejumlah bentuk struktur data, aksi/ operasi yang bisa dilakukan, dan parameter atau nilai apa saja yang bisa diolah oleh aksi / operasi tersebut.
- Abstract data type (ADT) di Python direpresentasikan oleh konsep Class dan Object
- Abstract data type (ADT) adalah bentuk khusus dari suatu tipe data, dimana perilakunya didefinisikan oleh sekumpulan nilai dan rangkaian operasi.
- Abstract data type (ADT) dibuat atau disusun dari tipe data primitive, namu logika operasinya disembunyikan
2. Stack
2.1. Definisi Stack
Stack adalah struktur data yang terdiri dari sekumpulan elemen yang tersusun secara linear dan hanya dapat diakses dari satu ujung yang disebut top. Prinsip kerja stack adalah Last-In First-Out (LIFO), yang artinya elemen terakhir yang dimasukkan ke dalam stack akan menjadi elemen pertama yang keluar. Operasi dasar yang terdapat pada stack antara lain:
Operasi yang dapat dilakukan stack :
- push(item): menambahkan item ke dalam stack pada posisi top.
- pop(): mengambil dan menghapus item teratas dari stack.
- peek(): mengambil item teratas dari stack tanpa menghapusnya.
- is_empty(): memeriksa apakah stack kosong.
- size(): mengembalikan jumlah item pada stack.
2.2. Implementasi Stack
Stack dapat diimplementasikan dengan menggunakan class pada bahasa pemrograman Python. Berikut ini adalah contoh implementasi Stack menggunakan class pada Python:
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()
def peek(self):
if not self.is_empty():
return self.items[-1]
def size(self):
return len(self.items)
Penjelasan kode di atas:
def __init__(self):
self.items = []
- Fungsi init() digunakan untuk membuat objek Stack dengan daftar kosong.
def is_empty(self):
return len(self.items) == 0
- Fungsi is_empty() digunakan untuk memeriksa apakah stack kosong atau tidak. Jika panjang daftar sama dengan nol, maka stack kosong.
def push(self, item):
self.items.append(item)
- Fungsi push(item) digunakan untuk menambahkan item ke dalam stack dengan menambahkannya ke dalam daftar pada posisi terakhir.
def pop(self):
if not self.is_empty():
return self.items.pop()
- Fungsi pop() digunakan untuk mengambil dan menghapus item teratas dari stack. Fungsi ini menghapus item pada posisi terakhir dari daftar menggunakan fungsi pop().
def peek(self):
if not self.is_empty():
return self.items[-1]
- Fungsi peek() digunakan untuk mengambil item teratas dari stack tanpa menghapusnya. Fungsi ini mengambil item pada posisi terakhir dari daftar menggunakan indeks [-1].
def size(self):
return len(self.items)
- Fungsi size() digunakan untuk mengembalikan jumlah item pada stack dengan menghitung panjang daftar.
2.2.1 Implementasi Stack dengan class
class Book:
def __init__(self, title, author):
self.title = title
self.author = author
def __str__(self):
return f"{self.title} by {self.author}"
class Stack:
def __init__(self):
self.data = []
def push(self, item):
self.data.append(item)
def pop(self):
if not self.is_empty():
return self.data.pop()
def peek(self):
if not self.is_empty():
return self.data[-1]
def is_empty(self):
return len(self.data) == 0
def size(self):
return len(self.data)
# Contoh penggunaan stack dengan objek buku
book_stack = Stack()
book_stack.push(Book("Harry Potter", "J.K. Rowling"))
book_stack.push(Book("To Kill a Mockingbird", "Harper Lee"))
book_stack.push(Book("The Great Gatsby", "F. Scott Fitzgerald"))
print("Is Empty?", book_stack.is_empty())
print("Size:", book_stack.size())
print("Pop:", book_stack.pop())
print("Peek:", book_stack.peek())
print("Is Empty?", book_stack.is_empty())
print("Size:", book_stack.size())
Output :
Is Empty? False
Size: 3
Pop: The Great Gatsby by F. Scott Fitzgerald
Peek: To Kill a Mockingbird by Harper Lee
Is Empty? False
Size: 2