Kelompok 3. 3SSDT-A
Kelompok 3. 3SSDT-A
Kelompok 3. 3SSDT-A
KELOMPOK 3
STRUKTUR DATA
PENYUSUN:
STACK : 191002 Andi Achmad Tamimi
QUEUE : 191032 Paul C.Diaz
LINKED LIST : 191022 M. Abdul Aziz I. Marsaoly
BINARY TREE : 191004 Nisar Said
Operasi-operasi dasar dalam stack ada 2 yaitu operasi push dan pop:
Operasi push, berfungsi untuk memasukkan sebuah nilai atau data ke dalam
stack. Sebelum sebuah nilai atau data dimasukkan ke dalamstack, prosedur ini
terlebih dahulu akan menaikkan posisi top satu level ke atas.
Operasi pop, berfungsi untuk mengeluarkan atau menghapus nilai terakhir
(yang berada pada posisi paling atas) dari stack, dengan cara menurunkan nilai
top satu level ke bawah.
b) .ilustrasi stack
Ilustrasi Stack
Ilustrasi operasi push
c) .algoritma stack
a. Operasi Push
Algoritma operasi push pada stack adalah sebagai berikut:
Menentukan kondisi tumpukan, apakah tumpukan dalam keadaan kosong
atau tidak.
Jika kosong maka mendeklarasikan data baru yang akan dimasukkan ke
dalam tumpukan.
Memasukkan nilai data yang baru.
Melakukan perulangan untuk memasukkan data hingga batas penuh
tumpukan.
Jika tumpukan sudah penuh maka selesai.
b. Operasi Pop
Algoritma operasi pop pada stack adalah sebagai berikut:
Melakukan pengecekan kondisi antrian, ada isi data atau tidak.
Jika terdapat data pada antrian, maka lakukan penghapusan data dengan
cara memindahkan head (elemen teratas tumpukan) ke elemen
dibawahnya.
Kemudian menghapus elemen teratas tumpukan.
Jika tidak terdapat data pada tumpukan maka selesai.
d) . Operasi IsFull
untuk memeriksa keadaan stack apakah sudah penuh atau belum.
e) . Operasi Push
Operasi push adalah operasi dasar dari stack yang berguna untuk
menambah suatu elemen data baru pada stack dan di simpan pada posisi top yang
akan mengakibatkan posisi top akan berubah.
f) . Operasi Pop
Operasi Pop adalah salah satu operasi paling besar dari stack yang berguna
untuk mengambil elemen terakhir(top) dan kemudian menghapus elemen tersebut
sehingga posisi top akan berpindah.
g) .Operasi Print
Untuk menampilkan semua elemen-elemen stack. Dengan cara looping
semua nilai array secara terbalik, karena kita harus mengaksesdari indeks array
tertinggi terlebih dahulu baru ke indeks yang kecil.
3) .Implementasi Stack menggunakan Python
a).tumpukan (stack) dengan phyton
Tumpukan adalah struktur data linier yang menyimpan item dengan cara
Last-In / First-Out (LIFO) atau First-In / Last-Out (FILO). Dalam tumpukan,
elemen baru ditambahkan di salah satu ujung dan elemen dihapus dari ujung itu
saja. Operasi memasukkan dan menghapus sering disebut push dan pop.
b).penerapan
Ada berbagai cara untuk menerapkan tumpukan dengan Python. Artikel ini
membahas implementasi tumpukan menggunakan struktur data dan modul dari
pustaka Python. Stack in Python dapat diimplementasikan menggunakan cara-cara
berikut: Daftar
- collections.deque
- antrian.LifoQueue
c).implementasi menggunakan phyton
Daftar struktur data buil-in Python dapat digunakan sebagai tumpukan.
Alih-alih push (), append () digunakan untuk menambahkan elemen ke atas
tumpukan sementara pop () menghapus elemen dalam urutan LIFO. list memiliki
beberapa kekurangan. Masalah terbesar adalah bahwa hal itu dapat mengalami
masalah kecepatan saat berkembang. Item dalam daftar disimpan bersebelahan
dalam memori, jika tumpukan tumbuh lebih besar dari blok memori yang saat ini
menyimpannya, maka Python perlu melakukan beberapa alokasi memori. Ini
dapat menyebabkan beberapa panggilan append () membutuhkan waktu lebih
lama daripada yang lain. implementasinya ke dalam phyton :
OUTPUTNYA :
4).Aplikasi Stack (contoh kasus yang menggunakan konsep Stack
dalam penyelesaiannya)
Ada banyak kegunaan terdapat pada Stack dan dapat membantu di kehidupan
sehari hari dan merupakan proses semacam algoritma sebenarnya dijumpai dalam
kehidupan sehari hari. Contoh penerapan antrian dalam aplikasi sehari hari jika
diartikan secara harafiah queue berarti antrian queue merupakan salah satu contoh
aplikasi dari pembuatan double linked list yang cukup sering kita temui dalam
kehiduypan sehari hari misalnya saat anda mengantri di loket untuk membeli tiket.
Prosedur dalam konsep seperti itu sebenarnya menyatakan semacam algoritma.
Contoh paling simple dalam kehidupan sehari hari adalah antrian pengunjung
bank.Sistem antrian penerapannya dan kehidupan sehari hari serta agar mahasiawa
dapat mengimplementasikan sistem antrian tersebut ke dalam bahasa pemograman c.
Larik dapat diakses berdasarkan indeksnya. operasi dasar pada stack deklarasi stack
dalam pemrograman dan implementasi dalam kehidupan sehari hari.
Array dalam ilmu komputer adalah suatu tipe data terstruktur yang dapat
menyimpan banyak data dengan suatu nama yang sama dan menempati tempat di
memori yang berurutan kontigu serta bertipe data sama pula. Adapun juga informasi
berkaitan dengan struktur data jenis data keterkaitan antar tabel sifat data dan masih
banyak lagi. Konsep utamanya adalah lifo last in first out benda yang terakhir masuk
dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. Contoh
penerapan stack dalam suatu tumpukan dari benda. Contoh penerapan struktur data
misalnya informasi tentang pengolahan data berbasis elektronik. Contoh penerapan
antrian dalam aplikasi sehari hari jika diartikan secara harafiah queue berarti antrian
queue merupakan salah satu contoh aplikasi dari pembuatan double linked list yang
cukup sering kita temui dalam kehiduypan sehari hari misalnya saat anda mengantri
di loket untuk membeli tiket.
Dan dibawah ini salah satu contoh kasus Stack dalan kehidupan sehari hari :
a. Setumpuk koran, dimana koran yang paling terakhir ditambahkan dan ditaruh
diatas adalah koran yang dapat dilihat
b. Seseorang yang sedang mencuci piring, piring yang dicuci pertama pasti akan
diletakan dibawah dan akan terus berlanjut sampai tumpukan piring yang
terakhir dicuci. Lalu, piring pasti akan di taruh di rak piring dan pasti yang
diambil adalah piring yang paling atas yaitu piring yang terakhir dicuci dan
yang pertama dicuci pasti akan terakhir.
c. Tumpukan Batu bata yang sedang diturunkan dari mobil pasti yang diambil
adalah batu bata yang paling atas, padahal batu bata pertama yang dimasukkan
kedalam mobil adalah batu bata yang berada dibawahnya.
d. Saat melakukan presentase kelas dan terdapat daftar dimana terdapat list dari
siswa yang berurut sesuai nim
e. Biasanya saat masuk kita akan diberi nomor antrian terlebih dahulu sebelum
dipanggil oleh teller
f. Selain itu juga ada daftar menu makanan pada restoran yang menyajikan menu
urut dari harga terendah hingga termahal daftar menu makanan
g. Jadi,Stack merupakan konsep sebuah koleksi objek yang menggunakan
prinsip LIFO(Last In First Out) dan Stack dapat diimplementasikan sebagai
representasi berkait atau kontinyu. Ciri-Ciri Stack diantaranya :
Elemen TOP/Puncak diketahui
Sumber : http://elektro.um.ac.id/wp-content/uploads/2016/04/Struktur-Data-Modul-
Praktikum-5-Queue.pdf
b. Ilustrasi
Sumber : https://baranghalusdev.blogspot.com/2017/04/queue-pada-python-
indonesian-language.html
B. Karakteristik Queue
a. elemen terakhir
b. front (elemen paling pertama)
c. tail (elemen paling terakhir)
d. jumlah elemen dalam queue
e. status antrian (kosong atau terisi)
C. Fungsi Queue
Sistem queue sangat berguna ketika data yang digunakan dibatasi,Ketika queue
sudah penuh maka elemen baru tidak bisa dimuat. Contoh:
array = [ 1,2,3,4,5,6,7,8 ]
Queue digunakan sama halnya pada antrian di dunia nyata, antrian yang pertama
masuk maka antrian tersebut akan dilayani lebih dulu.
b. isempty()
Untuk memeriksa queue kosong atau tidak.
c. peek()
Mengambil elemen paling terakhir tanpa menghapus elemen tersebut.
d. dequeue()
Mengambil elemen terakhir dan menghapus elemen tersebut dari queue
e. size()
Mengembalikan jumah elemen dalam list (tidak perlu parameter).
f. isfull()
Untuk mengecek anrtrian sudah penuh atau belum dengan mengecek nilai tail
(nilai akhir).
Sumber : http://mydailycodes9896.blogspot.com/2018/05/struktur-data-python-stack-
queue-dequeue.html#:~:text=Antrian%20(queue)%20merupakan%20struktur
%20data,belakang%20akan%20keluar%20terlebih%20dahulu.&text=enqueue()
%2C%20digunakan%20untuk%20menambah,dalam%20queue%20pada%20posisi
%20terakhir
Sumber : http://mydailycodes9896.blogspot.com/2018/05/struktur-data-python-stack-
queue-dequeue.html#:~:text=Antrian%20(queue)%20merupakan%20struktur
%20data,belakang%20akan%20keluar%20terlebih%20dahulu.&text=enqueue()
%2C%20digunakan%20untuk%20menambah,dalam%20queue%20pada%20posisi
%20terakhir.
Sumber : https://jepriana.blogspot.com/2016/12/queue-python.html
DAFTAR PUSTAKA
http://elektro.um.ac.id/wp-content/uploads/2016/04/Struktur-Data-Modul-Praktikum-
5-Queue.pdf
https://baranghalusdev.blogspot.com/2017/04/queue-pada-python-indonesian-
language.html
http://mydailycodes9896.blogspot.com/2018/05/struktur-data-python-stack-queue-
dequeue.html#:~:text=Antrian%20(queue)%20merupakan%20struktur
%20data,belakang%20akan%20keluar%20terlebih%20dahulu.&text=enqueue()
%2C%20digunakan%20untuk%20menambah,dalam%20queue%20pada%20posisi
%20terakhir
https://jepriana.blogspot.com/2016/12/queue-python.html
BAB III
SINGLE LINKED LIST
A. Pengertian Single Linked List
Single Linked List merupakan sebuah tempat yang disediakan pada satu area
memori tertentu untuk menyimpan data yang dikenal dengan sebutan node atau
simpul. Setiap node memiliki pointer yang menunjuk ke simpul berikutnya sehingga
terbentuk satu untaian, dengan demikian hanya diperlukan sebuah variabel pointer.
Susunan berupa untaian semacam ini disebut Single Linked List. Biasanya Linked
List pada node terakhir akan menunjuk ke NULL, dimana NULL memilik nilai
khusus yang artinya tidak menunjuk ke mana-mana.
Single Linked List dapat didefinisikan sebagai koleksi linear dari elemen –
elemen data. Penempatan elemen – elemen data ini acak di dalam memori, namun
antar elemen data ini terhubung dengan node. Jadi satu node dalam suatu elemen data
akan menunjuk ke node elemen data lain melalui suatu penunjuk yang umumnya
disebut pointer. Jadi dapat disimpulkan, sebuah koleksi data disebut sebagai Linked
List apabila antar data tersebut nodenya saling terhubung melalui pointer.
Ilutrasi.:
Secara sederhana berikut penjelasan melalui gambar.
Sebuah Node lengkap dengan elemen data dan pointernya
Kemudian contoh dari Single Linked List adalah sebagai berikut.
Dapat kita lihat dari gambar di atas, masing – masing node dihubungkan oleh satu
pointer. Sedangkan pada pointer node terakhir tidak menunjuk ke mana – mana
alias null.
return found
# Menghapus node
def delete(self, data):
current = self.head
previous = None
found = False
while current and found is False:
if current.get_data() == data:
found = True
else:
previous = current
current = current.get_next()
if current is None:
raise ValueError("Data not in list")
if previous is None:
self.head = current.get_next()
else:
previous.set_next(current.get_next())
if __name__ == "__main__":
# execute only if run as a script
l = LinkedList()
l.mainmenu()
https://jepriana.blogspot.com/2016/12/single-linked-list-python.html#:~:text=Single
%20Linked%20List%20merupakan%20sebuah,hanya%20diperlukan%20sebuah
%20variabel%20pointer.
http://temanbukuku.blogspot.com/2016/01/operasi-operasi-dasar-single-dan-
double.html
https://www.coursehero.com/file/49673220/Operasi-Pada-Single-Linked-
Listdocx/#:~:text=html%20Operasi%20Pada%20Single%20Linked%20List
%201.%20Insert%20%3D%20Istilah%20Insert,linked%20list%20kosong%20atau
%20tidak.
https://www.slideshare.net/dinanabila1/41-operasi-dasar-singly-linked-list-1-
primitive-list
https://unydevelopernetwork.com/index.php/2020/04/03/tutorial-struktur-data-
implementasi-single-linked-list-sederhana-dengan-java/
BAB IV
BINARY TREE
A. Konsep binary tree (definisi, ilustrasi dll)
1. Definisi binary tree
Binary Tree merupakan salah satu bentuk struktur data tidak linear
yang menggambarkan hubungan yang bersifat hirarkis (hubungan one to
many) antara elemen-elemen. Tree bisa didefinisikan sebagai kumpulan
simpul/node dengan satu elemen khusus yang disebut Root dan node lainnya
(disebut subtree).
Binary tree adalah suatu tree dengan syarat bahwa tiap node (simpul)
hanya boleh memiliki maksimal dua subtree dan kedua subtree tersebut harus
terpisah. Tiap node dalam binary tree boleh memiliki paling banyak dua child
(anak simpul), secara khusus anaknya dinamakan kiri dan kanan.
Binary Tree merupakan himpunan vertex-vertex yang terdiri dari 2
subtree (dengan disjoint) yaitu subtree kiri dan subtree kanan. Setiap vertex
dalam binary tree mempunyai derajat keluar max = 2.
2. Ilustrasi binary tree
Sebuah pohon biner adalah grafik asiklis yang terhubung dimana setiap
tingkatan dari susut tidak lebih dari 3. Ini dapat ditunjukkan bahwa dalam pohon
biner manapun, terdapat persis dua atau lebih simpul dengan tingkat satu dari pada
yang terdapat dengan tingkat tiga. Tetapi bisa terdapat angka apa saja dari simpul
dengan tingkat dua. Sebuah pohon biner berakar merupakan sebuah grafik yang
tingkat tidak lebih dari dua sebagai akar.
3. Istilah dalam binary tree
1) Pohon Biner Penuh (Full Binary Tree)
Semua simpul (kecuali daun) memiliki 2 anak dan tiap cabang memiliki
Panjang ruas yang sama.
2) Pohon Biner Lengkap (Complete Binary Tree)
Hamper sama dengan pohon biner penuh, semua simpul (kecuali daun)
memiliki 2 anak tetapi tiap cabang memiliki Panjang ruas berbeda.
source code-nya
from __future__ import print_function
class Stack:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items==[]
def push(self,items):
self.items.append(items)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[len(self.items)-1]
def size(self):
return len(self.items)
class Binarytree:
def __init__(self,root):
self.key = root
self.leftChild = None
self.rightChild = None
def insertLeft(self,newNode):
if self.leftChild == None :
self.leftChild = Binarytree(newNode)
else :
t = Binarytree(newNode)
t.leftChild = self.leftChild
self.leftChild = t
def insertRight(self,newNode):
if self.rightChild == None :
self.rightChild = Binarytree(newNode)
else :
t = Binarytree(newNode)
t.rightChild = self.rightChild
self.rightChild = t
def getrightChild(self):
return self.rightChild
def getleftChild(self):
return self.leftChild
def getrootVal(self):
return self.key
def setrootVal(self,obj):
self.key = obj
def size(self):
count = 0
selfleft = self
selfright = self
while selfleft.getleftChild() != None or selfright.getrightChild() != None :
count += 1
if selfleft.getleftChild() != None:
selfleft = selfleft.getleftChild()
else :
selfright = selfright.getrightChild()
return count
def Inorder(root):
if root:
Inorder(root.getleftChild())
print(root.getrootVal(),end=" ")
Inorder(root.getrightChild())
def Preorder(root):
if root:
print(root.getrootVal(),end=" ")
Preorder(root.getleftChild())
Preorder(root.getrightChild())
def Postorder(root):
if root:
Postorder(root.getleftChild())
Postorder(root.getrightChild())
print(root.getrootVal(),end=" ")
root = Binarytree('P')
root.insertLeft('F')
root.getleftChild().insertLeft('B')
root.getleftChild().insertRight('H')
root.getleftChild().getleftChild().insertLeft('A')
root.getleftChild().getrightChild().insertRight('M')
root.insertRight('S')
root.getrightChild().insertLeft("R")
root.getrightChild().insertRight("W")
Inorder(root)
print ()
Preorder(root)
print ()
Postorder(root)
Outputnya :
D. Aplikasi Binary Tree (contoh kasus yang menggunakan konsep Binary Tree
dalam penyelesaiannya)
a. Pohon Pencarian biner - Digunakan dalam banyak cari aplikasi di mana data
yang terus-menerus memasuki/meninggalkan,
seperti peta dan mengatur benda-benda dalam banyak bahasa' perpustakaan.
b. Binary Space Partition - Digunakan di hampir setiap video 3D permainan
untuk menentukan objek-objek apa saja yang perlu diberikan.
c. Biner Mencoba - Digunakan di hampir setiap high-bandwidth router untuk
menyimpan router-tabel.
d. Hash Pohon - digunakan dalam program p2p dan berupa gambar tanda
tangan di mana hash perlu diverifikasi, tetapi seluruh file tidak tersedia.
e. Tumpukan - Digunakan dalam melaksanakan efisien prioritas antrian, yang
pada gilirannya digunakan untuk penjadwalan proses-proses di banyak sistem
operasi, Kualitas-of-Service di router, dan (path-finding algoritma yang
digunakan dalam AI aplikasi, termasuk robotika dan video game)*. Juga
digunakan dalam tumpukan-macam.
f. Huffman Coding Pohon (Chip Uni) - yang digunakan dalam algoritma
kompresi, seperti yang digunakan oleh .jpeg dan .mp3 file format.
g. GGM Pohon - Digunakan dalam aplikasi kriptografi untuk menghasilkan
pohon angka pseudo-random.
h. Pohon sintaks yang Dibangun oleh compiler dan (secara implisit) kalkulator
untuk mengurai ekspresi.
i. Treap - Acak struktur data yang digunakan dalam jaringan nirkabel dan
alokasi memori.
j. T-pohon - Meskipun sebagian besar database menggunakan beberapa bentuk
dari B-tree untuk menyimpan data pada drive, database yang menyimpan
semua (sebagian besar) mereka data di memori sering menggunakan T-pohon
untuk melakukannya.
Source code-nya
Outputnya :