SlideShare a Scribd company logo
1 of 76
STRUKTUR DATA
array stack dan queue
Towers of Hanoi
Towers of Hanoi
Towers of Hanoi
Towers of Hanoi
Towers of Hanoi
Towers of Hanoi
Towers of Hanoi
Towers of Hanoi
Stack = tumpukan
• Suatu susunan koleksi data dimana data dapat ditambahkan dan
dihapus selalu dilakukan pada bagian akhir data, yang disebut
dengan top of stack (TOS)
• Stack bersifat LIFO (Last In First Out)
• “Benda yang terakhir masuk ke dalam stack akan menjadi yang
pertama keluar dari stack
TV TV
VCD
Compo
TV
VCD
Compo
TV
VCD
Compo
Last In First Out
B
A
D
C
B
A
C
B
A
D
C
B
A
E
D
C
B
A
top
top
top
top
top
A
Stack Applications
• Real life
• Pile of books (tumpukan buku)
• Plate trays (tumpukan piring)
• More applications related to computer science
• Program execution stack (read more from your text)
• Evaluating expressions
Operasi Stack
• Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
• Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
• Clear : digunakan untuk mengosongkan stack
• IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
• IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh
4
3
2
1
1
2
3
4
O
U
T
I
N
Stack with Array of Struct
• Definisikan Stack dengan menggunakan suatu
struct
• Definisikan konstanta MAX_STACK untuk
menyimpan maksimum isi stack
• Elemen struct Stack adalah array data dan top
untuk menandakan posisi data teratas
• Buatlah variabel tumpuk sebagai implementasi
dari struct Stack
• Deklarasikan operasi-operasi/function di atas
dan buat implemetasinya
Program Stack
• Contoh deklarasi MAX_STACK
#define MAX_STACK 10
• Contoh deklarasi STACK dengan struct dan
array data
typedef struct STACK{
int top;
int data[10];
};
• Deklarasi/buat variabel dari struct
STACK tumpuk;
Program Stack (2)
Inisialisasi Stack
• Pada mulanya isi top dengan -1, karena array
dalam bahasa C dimulai dari 0, yang berarti
bahwa data stack adalah KOSONG!
• Top adalah suatu variabel penanda dalam Stack
yang menunjukkan elemen teratas data Stack
sekarang. Top Of Stack akan selalu bergerak
hingga mencapai MAX of STACK yang
menyebabkan stack PENUH
Program Stack (2)
Ilustrasi Stack pada saat inisialisasi!
Program Stack (3)
Fungsi IsFull
• Untuk memeriksa apakah stack sudah penuh?
• Dengan cara memeriksa top of stack, jika sudah sama dengan
MAX_STACK-1 maka full, jika belum (masih lebih kecil dari
MAX_STACK-1) maka belum full
Program Stack (4)
• Ilustrasi Stack pada kondisi Full
Program Stack (5)
Fungsi IsEmpty
• Untuk memeriksa apakah data Stack masih kosong?
• Dengan cara memeriksa top of stack, jika masih -1
maka berarti data Stack masih kosong!
int isEmpty()
{return (tumpuk.top==-1) ? 1:0;}
Program Stack (6)
Fungsi Push
• Untuk memasukkan elemen ke data Stack. Data
yang diinputkan selalu menjadi elemen teratas
Stack (yang ditunjuk oleh ToS)
• Jika data belum penuh,
• Tambah satu (increment) nilai top of stack lebih
dahulu setiap kali ada penambahan ke dalam array
data Stack.
• Isikan data baru ke stack berdasarkan indeks top of
stack yang telah di-increment sebelumnya.
• Jika tidak, outputkan “Penuh”
Program Stack (7)
Program Stack (8)
Fungsi Pop
• Untuk mengambil data Stack yang terletak paling
atas (data yang ditunjuk oleh TOS).
• Tampilkan terlebih dahulu nilai elemen teratas
stack dengan mengakses indeksnya sesuai dengan
top of stacknya, baru dilakukan di-decrement
nilai top of stacknya sehingga jumlah elemen
stack berkurang.
Program Stack (9)
Program Stack (10)
• Fungsi Print
• Untuk menampilkan semua elemen-
elemen data Stack
• Dengan cara me-loop semua nilai
array secara terbalik, karena kita harus
mengakses dari indeks array tertinggi
terlebih dahulu baru ke indeks yang
lebih kecil!
Program Stack (11)
Fungsi Peek
• Digunakan untuk melihat top of stack
Studi Kasus Stack
• Pembuatan Kalkulator SCIENTIFIC
• Misalkan operasi: 3 + 2 * 5
• Operasi di atas disebut notasi infiks,
notasi infiks tersebut harus diubah
lebih dahulu menjadi notas postfix
• 3 + 2 * 5 notasi postfiksnya adalah 3 2
5 * +
Studi Kasus Stack (2) – Infix to Postfix
• Baca soal dari depan ke belakang
• Jika berupa operand, maka masukkan ke posftix
• Jika berupa operator, maka:
• Jika stack masih kosong, push ke stack
• Jika derajat operator soal > derajat operator top of stack
• Push operator soal ke stack
• Selama derajat operator soal <= derajat operator top of stack
• Pop top of stack dan masukkan ke dalam posfix
• Setelah semua dilakukan, push operator soal ke stack
• Jika sudah semua soal dibaca, pop semua isi stack dan push ke postfix sesuai dengan
urutannya
3 + 2 * 5
stack
posftix
Studi Kasus Stack (3)
Contoh lain
• a+b*c-d
• Stack (kosong) dan Postfik (kosong)
• Scan a
• Postfik: a
• Scan +
• Stack: +
• Scan b
• Postfik: ab
• Scan *, karena ToS (+) < *, maka add ke Stack
• Stack: +*
Contoh• Scan c
• Postfik: abc
• Scan –, karena * > -, maka pop Stack, dan add ke Postfik
• Stack: +
• Postfik: abc*
• Karena + >= -, maka pop Stack, dan add ke Postfik, karena Stack
kosong, maka push – ke stack
• Stack: -
• Postfik: abc*+
• Scan d
• Postfik: abc*+d
• Karena sudah habis, push ToS stack ke Posfix
• Postfix: abc*+d-
Postfix Evaluator
• Scan Postfix string dari kiri kekanan.
• Siapkan sebuah stack kosong.
• Jika soal adalah operand, tambahkan ke stack. Jika
operator, maka pasti akan ada minimal 2 operand pada
stack
• Pop dua kali stack, pop pertama disimpan dalam y, dan pop
kedua ke dalam x. Lalu evaluasi x <operator> y. Simpan
hasilnya dan push ke dalam stack lagi.
• Ulangi hingga seluruh soal discan.
• Jika sudah semua, elemen terakhir pada stack adalah
hasilnya.
• Jika lebih dari satu elemen, berarti error!
Contoh 325*+
Queue/Antrian
Queue
What is the difference?
• Stack – a container that allows push and pop
• Queue - a container that allows enqueue and
dequeue
39
• queue: A list with the restriction that insertions are done at
one end and deletions are done at the other
• First-In, First-Out ("FIFO”)
• Elements are stored in order of
insertion but don't have indexes.
• Client can only add to the end of the
queue, and can only examine/remove
the front of the queue.
• basic queue operations:
• add (enqueue): Add an element to the back.
• remove (dequeue): Remove the front element.
• peek: Examine the element at the front.
Queue Applications
• Real life examples
• Waiting in line
• Waiting on hold for tech support
• Applications related to Computer Science
• Threads
• Job scheduling (e.g. Round-Robin algorithm for CPU
allocation)
Queues in computer science
41
• Operating systems:
• queue of print jobs to send to the printer
• queue of programs / processes to be run
• queue of network data packets to send
• Programming:
• modeling a line of customers or clients
• storing a queue of computations to be performed in order
• Real world examples:
• people on an escalator or waiting in a line
• cars at a gas station (or on an assembly line)
Queue Linier Array
• Terdapat satu buah pintu masuk di suatu ujung dan satu buah
pintu keluar di ujung satunya
• Sehingga membutuhkan 2 variabel: Head dan Tail
Queue Dengan Array
• Bersifat FIFO (First In First Out)
• Elemen yang pertama masuk ke antrian akan keluar pertama
kalinya
• DEQUEUE adalah mengeluarkan satu elemen dari suatu
Antrian
• Antrian dapat dibuat dengan menggunakan: Liniear Array dan
Circular Array
A
B
A
C
B
A
D
C
B
A
D
C
Brear
front
rear
front
rear
front
rear
front
rear
front
First In First Out
The Queue Operations
A queue is like a line of
people waiting for a bank
teller. The queue has a front
and a rear.
$ $
Front
Rear
The Queue Operations
New people must enter the queue at the rear. it
is usually called an enqueue operation.
$ $
Front
Rear
The Queue Operations
When an item is taken from the queue, it always
comes from the front. it is usually called a
dequeue operation.
$ $
Front
Rear
48
Queue
• Queue: First In First Out (FIFO)
• Toll Station
• Car comes, pays, leaves
• Check-out in Big Y market
• Customer comes, checks out and leaves
• More examples: Printer, Office Hours, …
ABCD OutputInput
49
More Examples of Queue
• In our daily life
• Airport Security Check
• Cinema Ticket Office
• Bank, ATM
• Anything else ?
50
What Is Queue
• Queue is an abstract data type
• Adding an entry at the rear
• Deleting an entry at the front
frontfrontrearrear
AddingAdding
DeletingDeleting
ABC
51
Abstract Data Types
• Queue
• Operating on both ends
• Operations: EnQueue(in), DeQueue(out)
frontfrontrearrear
enqueueenqueue
dequeuedequeue
ABC
52
Queue
Queue is FIFO ( First-In First-Out)
A queue is open at two ends. You can only add entry
(enqueue) at the rear , and delete entry (dequeue) at the
front.
Note that you cannot add/extract entry in the middle of the
queue.
53
Applications of Queue
• Printing Job Management
• Packet Forwarding in Routers
• Message queue in Windows
• I/O buffer
54
Printing Job Management
• Many users send their printing jobs to a public printer
• Printer will put them into a queue according to the arrival
time and print the jobs one by one
• These printing documents are A.doc, B.doc, C.doc and
D.doc
55
Printing Queue
Now printing A.doc
A.doc is finished. Now printing B.doc
Now still printing B.docD.doc comes
• A.doc B.doc C.doc arrive to printer.
ABC
BC
BCD
CD
D
B.doc is finished. Now printing C.doc
C.doc is finished. Now printing D.doc
56
First-in First-out (FIFO)
When we enqueue
entries in the queue and
then dequeue them one
by one, we will get the
items in the same order.
When we enqueue
entries in the queue and
then dequeue them one
by one, we will get the
items in the same order.
The first one
enqueued is the first
one dequeued.
(FIFO)
The first one
enqueued is the first
one dequeued.
(FIFO)
ABC
A
AB
BC
C
A, B, C come in
A, B, C come out
Queue Operation
 Empty Queue
Enqueue(70)
Queue Operation
 Enqueue(80)
 Enqueue(50)
Queue Operation
 Dequeue()
 Dequeue()
Queue Operation
 Enqueue(90)
 Enqueue(60)
Queue (2)
• Operasi-operasi:
Create()
• Untuk menciptakan dan menginisialisasi Queue
• Dengan cara membuat Head dan Tail = -1
Queue (3)
Queue (4)
• IsEmpty()
• Untuk memeriksa apakah Antrian sudah penuh atau
belum
• Dengan cara memeriksa nilai Tail, jika Tail = -1 maka
empty
• Kita tidak memeriksa Head, karena Head adalah tanda
untuk kepala antrian (elemen pertama dalam antrian)
yang tidak akan berubah-ubah
• Pergerakan pada Antrian terjadi dengan penambahan
elemen Antrian kebelakang, yaitu menggunakan nilai
Tail
Queue (5)
Queue (6)
Fungis IsFull
• Untuk mengecek apakah Antrian sudah penuh
atau belum
• Dengan cara mengecek nilai Tail, jika Tail >=
MAX-1 (karena MAX-1 adalah batas elemen
array pada C) berarti sudah penuh
Queue (7)
Enqueue
• Untuk menambahkan elemen ke dalam Antrian,
penambahan elemen selalu ditambahkan di elemen paling
belakang
• Penambahan elemen selalu menggerakan variabel Tail
dengan cara increment counter Tail terlebih dahulu
Queue (8)
Queue (9)
• Dequeue()
• Digunakan untuk menghapus elemen terdepan/pertama
(head) dari Antrian
• Dengan cara menggeser semua elemen antrian kedepan
dan mengurangi Tail dgn 1
• Penggeseran dilakukan dengan menggunakan looping
Queue (10)
Queue (11)
• Clear()
• Untuk menghapus elemen-elemen Antrian dengan cara
membuat Tail dan Head = -1
• Penghapusan elemen-elemen Antrian sebenarnya tidak
menghapus arraynya, namun hanya mengeset indeks
pengaksesan-nya ke nilai -1 sehingga elemen-elemen
Antrian tidak lagi terbaca
Queue (12)
Queue (13)
• Tampil()
• Untuk menampilkan nilai-nilai elemen Antrian
• Menggunakan looping dari head s/d tail
Soal
• Tambahkanlah function untuk mencari suatu
elemen dalam queue & stack
• Tambahkan function untuk mengedit suatu
elemen dalam queue & stack
• Carilah nilai total, rata-rata, terbesar dan
terkecil dari elemen-elemen queue dalam
function tersendiri
NEXT : Pengenalan Pointer dan Function by Ref.

More Related Content

What's hot

Struktur data pertemuan 11
Struktur data pertemuan 11Struktur data pertemuan 11
Struktur data pertemuan 11
ajonona
 
Bab 8-stack-dan-queue
Bab 8-stack-dan-queueBab 8-stack-dan-queue
Bab 8-stack-dan-queue
Razik Akamal
 

What's hot (19)

Fungsi rekursif, queue, stack
Fungsi rekursif, queue, stackFungsi rekursif, queue, stack
Fungsi rekursif, queue, stack
 
Struktur data pertemuan 11
Struktur data pertemuan 11Struktur data pertemuan 11
Struktur data pertemuan 11
 
Stack
StackStack
Stack
 
Bab 5 queue_antrian_
Bab 5 queue_antrian_Bab 5 queue_antrian_
Bab 5 queue_antrian_
 
2894065
28940652894065
2894065
 
5 STACK
5 STACK5 STACK
5 STACK
 
Bab 8-stack-dan-queue
Bab 8-stack-dan-queueBab 8-stack-dan-queue
Bab 8-stack-dan-queue
 
Queue antrian
Queue antrian Queue antrian
Queue antrian
 
Algoritma dan Struktur Data - tumpukan
Algoritma dan Struktur Data - tumpukanAlgoritma dan Struktur Data - tumpukan
Algoritma dan Struktur Data - tumpukan
 
Queue
QueueQueue
Queue
 
Algoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrianAlgoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrian
 
Bab 4 queue (antrian)
Bab 4 queue (antrian)Bab 4 queue (antrian)
Bab 4 queue (antrian)
 
FIFO (First In First Out)
FIFO (First In First Out)FIFO (First In First Out)
FIFO (First In First Out)
 
Queue
QueueQueue
Queue
 
Stack tumpukan
Stack tumpukan Stack tumpukan
Stack tumpukan
 
Chapter 4 stack and queue
Chapter 4   stack and queueChapter 4   stack and queue
Chapter 4 stack and queue
 
Algoritma dan Struktur Data - Antrian
Algoritma dan Struktur Data - AntrianAlgoritma dan Struktur Data - Antrian
Algoritma dan Struktur Data - Antrian
 
Chapter 4b queue
Chapter 4b   queueChapter 4b   queue
Chapter 4b queue
 
Bab viii stack
Bab viii   stackBab viii   stack
Bab viii stack
 

Similar to TI-struktur_data-stack_n_queue

Stack & queue by stanly maarende
Stack & queue by stanly maarendeStack & queue by stanly maarende
Stack & queue by stanly maarende
Sten Maarende
 

Similar to TI-struktur_data-stack_n_queue (19)

Stack tumpukan
Stack tumpukan Stack tumpukan
Stack tumpukan
 
Stack_Queue.pdf
Stack_Queue.pdfStack_Queue.pdf
Stack_Queue.pdf
 
Ketoprak_PPT ADT Stack dan Queue.pptx
Ketoprak_PPT ADT Stack dan Queue.pptxKetoprak_PPT ADT Stack dan Queue.pptx
Ketoprak_PPT ADT Stack dan Queue.pptx
 
STACK.pptx
STACK.pptxSTACK.pptx
STACK.pptx
 
Slide minggu 2 pertemuan 2 (struktur data1)
Slide minggu 2 pertemuan 2 (struktur data1)Slide minggu 2 pertemuan 2 (struktur data1)
Slide minggu 2 pertemuan 2 (struktur data1)
 
Pertemuan 5 Stack atau Tumpukan
Pertemuan 5 Stack atau TumpukanPertemuan 5 Stack atau Tumpukan
Pertemuan 5 Stack atau Tumpukan
 
Queue antrian
Queue antrian Queue antrian
Queue antrian
 
Asd sesi tree part2
Asd sesi tree part2Asd sesi tree part2
Asd sesi tree part2
 
Tugas
TugasTugas
Tugas
 
Tugas
TugasTugas
Tugas
 
Project akhir asd
Project akhir asdProject akhir asd
Project akhir asd
 
Queue
Queue Queue
Queue
 
Laporan praktikum modul viii
Laporan praktikum modul viiiLaporan praktikum modul viii
Laporan praktikum modul viii
 
Stack & queue by stanly maarende
Stack & queue by stanly maarendeStack & queue by stanly maarende
Stack & queue by stanly maarende
 
Laporan praktikum modul ix
Laporan praktikum modul ixLaporan praktikum modul ix
Laporan praktikum modul ix
 
Chapter 4a stack
Chapter 4a   stackChapter 4a   stack
Chapter 4a stack
 
Queue
QueueQueue
Queue
 
Pertemuan 4 ok
Pertemuan 4 okPertemuan 4 ok
Pertemuan 4 ok
 
Ifc modul 7 (queue)
Ifc   modul 7 (queue)Ifc   modul 7 (queue)
Ifc modul 7 (queue)
 

Recently uploaded

443016507-Sediaan-obat-PHYCOPHYTA-MYOPHYTA-dan-MYCOPHYTA-pptx.pptx
443016507-Sediaan-obat-PHYCOPHYTA-MYOPHYTA-dan-MYCOPHYTA-pptx.pptx443016507-Sediaan-obat-PHYCOPHYTA-MYOPHYTA-dan-MYCOPHYTA-pptx.pptx
443016507-Sediaan-obat-PHYCOPHYTA-MYOPHYTA-dan-MYCOPHYTA-pptx.pptx
ErikaPutriJayantini
 
Surat Pribadi dan Surat Dinas 7 SMP ppt.pdf
Surat Pribadi dan Surat Dinas 7 SMP ppt.pdfSurat Pribadi dan Surat Dinas 7 SMP ppt.pdf
Surat Pribadi dan Surat Dinas 7 SMP ppt.pdf
EirinELS
 
,,,,,,,,,,,,,,,,,,,,,,Swamedikasi 3.pptx
,,,,,,,,,,,,,,,,,,,,,,Swamedikasi 3.pptx,,,,,,,,,,,,,,,,,,,,,,Swamedikasi 3.pptx
,,,,,,,,,,,,,,,,,,,,,,Swamedikasi 3.pptx
furqanridha
 
IPS - karakteristik geografis, sosial, budaya, dan ekonomi di ASEAN
IPS - karakteristik geografis, sosial, budaya, dan ekonomi di ASEANIPS - karakteristik geografis, sosial, budaya, dan ekonomi di ASEAN
IPS - karakteristik geografis, sosial, budaya, dan ekonomi di ASEAN
GilangNandiaputri1
 

Recently uploaded (20)

443016507-Sediaan-obat-PHYCOPHYTA-MYOPHYTA-dan-MYCOPHYTA-pptx.pptx
443016507-Sediaan-obat-PHYCOPHYTA-MYOPHYTA-dan-MYCOPHYTA-pptx.pptx443016507-Sediaan-obat-PHYCOPHYTA-MYOPHYTA-dan-MYCOPHYTA-pptx.pptx
443016507-Sediaan-obat-PHYCOPHYTA-MYOPHYTA-dan-MYCOPHYTA-pptx.pptx
 
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdfMODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
 
Materi Sistem Pernapasan Pada Manusia untuk kelas 5 SD
Materi Sistem Pernapasan Pada Manusia untuk kelas 5 SDMateri Sistem Pernapasan Pada Manusia untuk kelas 5 SD
Materi Sistem Pernapasan Pada Manusia untuk kelas 5 SD
 
MODUL AJAR IPAS KELAS 5 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 5 KURIKULUM MERDEKA.pdfMODUL AJAR IPAS KELAS 5 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 5 KURIKULUM MERDEKA.pdf
 
Aksi Nyata profil pelajar pancasila.pptx
Aksi Nyata profil pelajar pancasila.pptxAksi Nyata profil pelajar pancasila.pptx
Aksi Nyata profil pelajar pancasila.pptx
 
Pembahasan Soal Ujian Komprehensif Farmasi Perapotekan
Pembahasan Soal Ujian Komprehensif Farmasi PerapotekanPembahasan Soal Ujian Komprehensif Farmasi Perapotekan
Pembahasan Soal Ujian Komprehensif Farmasi Perapotekan
 
sistem digesti dan ekskresi pada unggas ppt
sistem digesti dan ekskresi pada unggas pptsistem digesti dan ekskresi pada unggas ppt
sistem digesti dan ekskresi pada unggas ppt
 
Surat Pribadi dan Surat Dinas 7 SMP ppt.pdf
Surat Pribadi dan Surat Dinas 7 SMP ppt.pdfSurat Pribadi dan Surat Dinas 7 SMP ppt.pdf
Surat Pribadi dan Surat Dinas 7 SMP ppt.pdf
 
Bioteknologi Konvensional dan Modern kelas 9 SMP
Bioteknologi Konvensional dan Modern  kelas 9 SMPBioteknologi Konvensional dan Modern  kelas 9 SMP
Bioteknologi Konvensional dan Modern kelas 9 SMP
 
Modul Ajar IPAS Kelas 4 Fase B Kurikulum Merdeka [abdiera.com]
Modul Ajar IPAS Kelas 4 Fase B Kurikulum Merdeka [abdiera.com]Modul Ajar IPAS Kelas 4 Fase B Kurikulum Merdeka [abdiera.com]
Modul Ajar IPAS Kelas 4 Fase B Kurikulum Merdeka [abdiera.com]
 
AKSI NYATA Numerasi Meningkatkan Kompetensi Murid_compressed (1) (1).pptx
AKSI NYATA  Numerasi  Meningkatkan Kompetensi Murid_compressed (1) (1).pptxAKSI NYATA  Numerasi  Meningkatkan Kompetensi Murid_compressed (1) (1).pptx
AKSI NYATA Numerasi Meningkatkan Kompetensi Murid_compressed (1) (1).pptx
 
,,,,,,,,,,,,,,,,,,,,,,Swamedikasi 3.pptx
,,,,,,,,,,,,,,,,,,,,,,Swamedikasi 3.pptx,,,,,,,,,,,,,,,,,,,,,,Swamedikasi 3.pptx
,,,,,,,,,,,,,,,,,,,,,,Swamedikasi 3.pptx
 
RENCANA + Link2 MATERI Training _"SISTEM MANAJEMEN MUTU (ISO 9001_2015)".
RENCANA + Link2 MATERI Training _"SISTEM MANAJEMEN MUTU (ISO 9001_2015)".RENCANA + Link2 MATERI Training _"SISTEM MANAJEMEN MUTU (ISO 9001_2015)".
RENCANA + Link2 MATERI Training _"SISTEM MANAJEMEN MUTU (ISO 9001_2015)".
 
Prov.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdf
Prov.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdfProv.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdf
Prov.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdf
 
UAS Matematika kelas IX 2024 HK_2024.pdf
UAS Matematika kelas IX 2024 HK_2024.pdfUAS Matematika kelas IX 2024 HK_2024.pdf
UAS Matematika kelas IX 2024 HK_2024.pdf
 
PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...
PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...
PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...
 
MESYUARAT KURIKULUM BIL 1/2024 SEKOLAH KEBANGSAAN SRI SERDANG
MESYUARAT KURIKULUM BIL 1/2024 SEKOLAH KEBANGSAAN SRI SERDANGMESYUARAT KURIKULUM BIL 1/2024 SEKOLAH KEBANGSAAN SRI SERDANG
MESYUARAT KURIKULUM BIL 1/2024 SEKOLAH KEBANGSAAN SRI SERDANG
 
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdf
 
PPT BAHASA INDONESIA KELAS 1 SEKOLAH DASAR
PPT BAHASA INDONESIA KELAS 1 SEKOLAH DASARPPT BAHASA INDONESIA KELAS 1 SEKOLAH DASAR
PPT BAHASA INDONESIA KELAS 1 SEKOLAH DASAR
 
IPS - karakteristik geografis, sosial, budaya, dan ekonomi di ASEAN
IPS - karakteristik geografis, sosial, budaya, dan ekonomi di ASEANIPS - karakteristik geografis, sosial, budaya, dan ekonomi di ASEAN
IPS - karakteristik geografis, sosial, budaya, dan ekonomi di ASEAN
 

TI-struktur_data-stack_n_queue

  • 10. Stack = tumpukan • Suatu susunan koleksi data dimana data dapat ditambahkan dan dihapus selalu dilakukan pada bagian akhir data, yang disebut dengan top of stack (TOS) • Stack bersifat LIFO (Last In First Out) • “Benda yang terakhir masuk ke dalam stack akan menjadi yang pertama keluar dari stack TV TV VCD Compo TV VCD Compo TV VCD Compo
  • 11. Last In First Out B A D C B A C B A D C B A E D C B A top top top top top A
  • 12. Stack Applications • Real life • Pile of books (tumpukan buku) • Plate trays (tumpukan piring) • More applications related to computer science • Program execution stack (read more from your text) • Evaluating expressions
  • 13. Operasi Stack • Push : digunakan untuk menambah item pada stack pada tumpukan paling atas • Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas • Clear : digunakan untuk mengosongkan stack • IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong • IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh 4 3 2 1 1 2 3 4 O U T I N
  • 14. Stack with Array of Struct • Definisikan Stack dengan menggunakan suatu struct • Definisikan konstanta MAX_STACK untuk menyimpan maksimum isi stack • Elemen struct Stack adalah array data dan top untuk menandakan posisi data teratas • Buatlah variabel tumpuk sebagai implementasi dari struct Stack • Deklarasikan operasi-operasi/function di atas dan buat implemetasinya
  • 15. Program Stack • Contoh deklarasi MAX_STACK #define MAX_STACK 10 • Contoh deklarasi STACK dengan struct dan array data typedef struct STACK{ int top; int data[10]; }; • Deklarasi/buat variabel dari struct STACK tumpuk;
  • 16.
  • 17.
  • 18. Program Stack (2) Inisialisasi Stack • Pada mulanya isi top dengan -1, karena array dalam bahasa C dimulai dari 0, yang berarti bahwa data stack adalah KOSONG! • Top adalah suatu variabel penanda dalam Stack yang menunjukkan elemen teratas data Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK yang menyebabkan stack PENUH
  • 19. Program Stack (2) Ilustrasi Stack pada saat inisialisasi!
  • 20. Program Stack (3) Fungsi IsFull • Untuk memeriksa apakah stack sudah penuh? • Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full
  • 21. Program Stack (4) • Ilustrasi Stack pada kondisi Full
  • 22. Program Stack (5) Fungsi IsEmpty • Untuk memeriksa apakah data Stack masih kosong? • Dengan cara memeriksa top of stack, jika masih -1 maka berarti data Stack masih kosong! int isEmpty() {return (tumpuk.top==-1) ? 1:0;}
  • 23. Program Stack (6) Fungsi Push • Untuk memasukkan elemen ke data Stack. Data yang diinputkan selalu menjadi elemen teratas Stack (yang ditunjuk oleh ToS) • Jika data belum penuh, • Tambah satu (increment) nilai top of stack lebih dahulu setiap kali ada penambahan ke dalam array data Stack. • Isikan data baru ke stack berdasarkan indeks top of stack yang telah di-increment sebelumnya. • Jika tidak, outputkan “Penuh”
  • 25. Program Stack (8) Fungsi Pop • Untuk mengambil data Stack yang terletak paling atas (data yang ditunjuk oleh TOS). • Tampilkan terlebih dahulu nilai elemen teratas stack dengan mengakses indeksnya sesuai dengan top of stacknya, baru dilakukan di-decrement nilai top of stacknya sehingga jumlah elemen stack berkurang.
  • 27. Program Stack (10) • Fungsi Print • Untuk menampilkan semua elemen- elemen data Stack • Dengan cara me-loop semua nilai array secara terbalik, karena kita harus mengakses dari indeks array tertinggi terlebih dahulu baru ke indeks yang lebih kecil!
  • 29. Fungsi Peek • Digunakan untuk melihat top of stack
  • 30. Studi Kasus Stack • Pembuatan Kalkulator SCIENTIFIC • Misalkan operasi: 3 + 2 * 5 • Operasi di atas disebut notasi infiks, notasi infiks tersebut harus diubah lebih dahulu menjadi notas postfix • 3 + 2 * 5 notasi postfiksnya adalah 3 2 5 * +
  • 31. Studi Kasus Stack (2) – Infix to Postfix • Baca soal dari depan ke belakang • Jika berupa operand, maka masukkan ke posftix • Jika berupa operator, maka: • Jika stack masih kosong, push ke stack • Jika derajat operator soal > derajat operator top of stack • Push operator soal ke stack • Selama derajat operator soal <= derajat operator top of stack • Pop top of stack dan masukkan ke dalam posfix • Setelah semua dilakukan, push operator soal ke stack • Jika sudah semua soal dibaca, pop semua isi stack dan push ke postfix sesuai dengan urutannya 3 + 2 * 5 stack posftix
  • 33. Contoh lain • a+b*c-d • Stack (kosong) dan Postfik (kosong) • Scan a • Postfik: a • Scan + • Stack: + • Scan b • Postfik: ab • Scan *, karena ToS (+) < *, maka add ke Stack • Stack: +*
  • 34. Contoh• Scan c • Postfik: abc • Scan –, karena * > -, maka pop Stack, dan add ke Postfik • Stack: + • Postfik: abc* • Karena + >= -, maka pop Stack, dan add ke Postfik, karena Stack kosong, maka push – ke stack • Stack: - • Postfik: abc*+ • Scan d • Postfik: abc*+d • Karena sudah habis, push ToS stack ke Posfix • Postfix: abc*+d-
  • 35. Postfix Evaluator • Scan Postfix string dari kiri kekanan. • Siapkan sebuah stack kosong. • Jika soal adalah operand, tambahkan ke stack. Jika operator, maka pasti akan ada minimal 2 operand pada stack • Pop dua kali stack, pop pertama disimpan dalam y, dan pop kedua ke dalam x. Lalu evaluasi x <operator> y. Simpan hasilnya dan push ke dalam stack lagi. • Ulangi hingga seluruh soal discan. • Jika sudah semua, elemen terakhir pada stack adalah hasilnya. • Jika lebih dari satu elemen, berarti error!
  • 38. Queue What is the difference? • Stack – a container that allows push and pop • Queue - a container that allows enqueue and dequeue
  • 39. 39 • queue: A list with the restriction that insertions are done at one end and deletions are done at the other • First-In, First-Out ("FIFO”) • Elements are stored in order of insertion but don't have indexes. • Client can only add to the end of the queue, and can only examine/remove the front of the queue. • basic queue operations: • add (enqueue): Add an element to the back. • remove (dequeue): Remove the front element. • peek: Examine the element at the front.
  • 40. Queue Applications • Real life examples • Waiting in line • Waiting on hold for tech support • Applications related to Computer Science • Threads • Job scheduling (e.g. Round-Robin algorithm for CPU allocation)
  • 41. Queues in computer science 41 • Operating systems: • queue of print jobs to send to the printer • queue of programs / processes to be run • queue of network data packets to send • Programming: • modeling a line of customers or clients • storing a queue of computations to be performed in order • Real world examples: • people on an escalator or waiting in a line • cars at a gas station (or on an assembly line)
  • 42. Queue Linier Array • Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya • Sehingga membutuhkan 2 variabel: Head dan Tail
  • 43. Queue Dengan Array • Bersifat FIFO (First In First Out) • Elemen yang pertama masuk ke antrian akan keluar pertama kalinya • DEQUEUE adalah mengeluarkan satu elemen dari suatu Antrian • Antrian dapat dibuat dengan menggunakan: Liniear Array dan Circular Array
  • 45. The Queue Operations A queue is like a line of people waiting for a bank teller. The queue has a front and a rear. $ $ Front Rear
  • 46. The Queue Operations New people must enter the queue at the rear. it is usually called an enqueue operation. $ $ Front Rear
  • 47. The Queue Operations When an item is taken from the queue, it always comes from the front. it is usually called a dequeue operation. $ $ Front Rear
  • 48. 48 Queue • Queue: First In First Out (FIFO) • Toll Station • Car comes, pays, leaves • Check-out in Big Y market • Customer comes, checks out and leaves • More examples: Printer, Office Hours, … ABCD OutputInput
  • 49. 49 More Examples of Queue • In our daily life • Airport Security Check • Cinema Ticket Office • Bank, ATM • Anything else ?
  • 50. 50 What Is Queue • Queue is an abstract data type • Adding an entry at the rear • Deleting an entry at the front frontfrontrearrear AddingAdding DeletingDeleting ABC
  • 51. 51 Abstract Data Types • Queue • Operating on both ends • Operations: EnQueue(in), DeQueue(out) frontfrontrearrear enqueueenqueue dequeuedequeue ABC
  • 52. 52 Queue Queue is FIFO ( First-In First-Out) A queue is open at two ends. You can only add entry (enqueue) at the rear , and delete entry (dequeue) at the front. Note that you cannot add/extract entry in the middle of the queue.
  • 53. 53 Applications of Queue • Printing Job Management • Packet Forwarding in Routers • Message queue in Windows • I/O buffer
  • 54. 54 Printing Job Management • Many users send their printing jobs to a public printer • Printer will put them into a queue according to the arrival time and print the jobs one by one • These printing documents are A.doc, B.doc, C.doc and D.doc
  • 55. 55 Printing Queue Now printing A.doc A.doc is finished. Now printing B.doc Now still printing B.docD.doc comes • A.doc B.doc C.doc arrive to printer. ABC BC BCD CD D B.doc is finished. Now printing C.doc C.doc is finished. Now printing D.doc
  • 56. 56 First-in First-out (FIFO) When we enqueue entries in the queue and then dequeue them one by one, we will get the items in the same order. When we enqueue entries in the queue and then dequeue them one by one, we will get the items in the same order. The first one enqueued is the first one dequeued. (FIFO) The first one enqueued is the first one dequeued. (FIFO) ABC A AB BC C A, B, C come in A, B, C come out
  • 57. Queue Operation  Empty Queue Enqueue(70)
  • 61.
  • 62.
  • 63. Queue (2) • Operasi-operasi: Create() • Untuk menciptakan dan menginisialisasi Queue • Dengan cara membuat Head dan Tail = -1
  • 65. Queue (4) • IsEmpty() • Untuk memeriksa apakah Antrian sudah penuh atau belum • Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty • Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah • Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian kebelakang, yaitu menggunakan nilai Tail
  • 67. Queue (6) Fungis IsFull • Untuk mengecek apakah Antrian sudah penuh atau belum • Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1 adalah batas elemen array pada C) berarti sudah penuh
  • 68.
  • 69. Queue (7) Enqueue • Untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di elemen paling belakang • Penambahan elemen selalu menggerakan variabel Tail dengan cara increment counter Tail terlebih dahulu
  • 71. Queue (9) • Dequeue() • Digunakan untuk menghapus elemen terdepan/pertama (head) dari Antrian • Dengan cara menggeser semua elemen antrian kedepan dan mengurangi Tail dgn 1 • Penggeseran dilakukan dengan menggunakan looping
  • 73. Queue (11) • Clear() • Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head = -1 • Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks pengaksesan-nya ke nilai -1 sehingga elemen-elemen Antrian tidak lagi terbaca
  • 75. Queue (13) • Tampil() • Untuk menampilkan nilai-nilai elemen Antrian • Menggunakan looping dari head s/d tail
  • 76. Soal • Tambahkanlah function untuk mencari suatu elemen dalam queue & stack • Tambahkan function untuk mengedit suatu elemen dalam queue & stack • Carilah nilai total, rata-rata, terbesar dan terkecil dari elemen-elemen queue dalam function tersendiri NEXT : Pengenalan Pointer dan Function by Ref.

Editor's Notes

  1. When you think of a computer science queue, you can imagine a line of people waiting for a teller in a bank. The line has a front (the next person to be served) and a rear (the last person to arrive.
  2. Don’t ask me why the C++ STL used the name push. It only confuses matters with a stack. In any case, when a new item enters a queue, it does so at the rear.
  3. When an item is removed from a queue, the removal occurs at the front.