Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Stack
2
Last In First Out (LIFO) Operasi Stack PUSH penambahan elemen baru POP
STACK / TUMPUKAN Struktur data Last In First Out (LIFO) Operasi Stack PUSH penambahan elemen baru POP pengapusan elemen
3
STACK REPRESENTASI STATIS
Implementasi menggunakan ARRAY Kondisi OVER FLOW kondisi UNDER FLOW
4
PSEUDOCODE STACK Algoritma Stack Deskripsi
{algoritma stack / tumpukan} Deklarasi type NilaiKuliah = record < nama : string nilai : integer > const MAX = 10 type stack = record < top : integer data : array [1 .. MAX] of NilaiKuliah St : stack procedure createEmpty(input/output s : stack) function isEmpty (input s : stack) boolean function isFull(input s : stack) boolean procedure push(input nama : string, input nilai :integer , input/output s : stack) procedure pop (input/output s: stack) procedure printStack (input s: stack) Deskripsi createEmpty(St) printStack(St) write(‘ ’) push(‘Hendra’,90,st) push(‘Mikael’,50,st) pop(St)
5
PSEUDOCODE STACK procedure createEmpty(input/output s : stack)
Deklarasi {tidak ada} Deskripsi s.top -1 function isEmpty (input s : stack) boolean Deklarasi hasil : boolean Deskripsi hasil false if s.top=-1 then hasil true end if return hasil function isFull(input s : stack) boolean Deklarasi hasil : boolean Deskripsi hasil false if s.top=MAXthen hasil true end if return hasil
6
PSEUDOCODE STACK procedure push(input nama : string, input nilai :integer , input/output s : stack) {menambah elemen di dalam stack} Deklarasi {tidak ada} Deskripsi if isFull(S) =TRUE then write(‘STACK PENUH’) else if isEmpty (S) =TRUE then s.top 1 s.nama[1] nama s.nilai[1] nilai s.top s.top + 1 s.nama[s.top] nama s.nilai[s.top] nilai endif end if
7
PSEUDOCODE STACK procedure pop (input/output s: stack)
{menghapus elemen di dalam stack} Deklarasi {tidak ada} Deskripsi if s.top = 1 then s.top -1 else if s.top <> -1 then s.top s.top – 1 write(‘Stack Kosong’) endif end if procedure printStack (input s: stack) {Menampilkan isi Stack ke layar} Deklarasi i : integer Deskripsi if s.top = -1 then write (‘STACK KOSONG’) else for i1 to s.top do write(‘elemen ke- ’,i) write(‘NAMA’ , s.data[i].nama) write(‘NILAI’ , s.data[i].nilai) endfor end if
8
Queue
9
Queue Dengan Array Bersifat FIFO
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
10
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
11
Queue (2) Operasi-operasi: Create()
Untuk menciptakan dan menginisialisasi Queue Dengan cara membuat Head dan Tail = -1
12
Queue (3)
13
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
14
Queue (5)
15
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
16
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
17
Queue (8)
18
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
19
Queue (10)
20
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
21
Queue (12)
22
Tampil() Queue (13) Untuk menampilkan nilai-nilai elemen Antrian
Menggunakan looping dari head s/d tail
23
Algoritma Queue Deklarasi const MAX = 10 type queue = record < head,tail : integer nama : array[1..MAX] of string > q : queue procedure createEmpty(input/output q : queue) function isEmpty (input q : queue) boolean function isFull (input q : queue) boolean procedure enqueue(input nama : string, input/output q:queue) procedure dequeue(input/output q:queue) procedure printQueue (input q: queue)
24
procedure createEmpty(input/output q : queue)
Deklarasi {tidak ada} deskripsi q.head -1 q.tail -1 function isEmpty (input q : queue) boolean deklarasi hasil:boolean if q.tail=-1 then hasil true else hasil false endif
25
function isFull (input q : queue) boolean
deklarasi hasil:boolean deskripsi if q.tail=MAX then hasil true else hasil false endif
26
procedure enqueue(input nama : string, input/output q:queue) deklarasi deskripsi if isFull(q)=TRUE then write(‘QUEUE PENUH’) else if isEmpty(q)=TRUE then q.head 1 q.tail 1 q.nama[1] nama q.tail q.tail + 1 q.nama[q.tail] nama endif end if
27
procedure dequeue(input/output q:queue) deklarasi i : integer Deskripsi if isEmpty(q)=TRUE then write(‘QUEUE KOSONG) else if q.head = q.tail then q.head -1 q.tail -1 for iq.head to q.tail-1 q.nama[i] = q.nama[i+1] endfor q.tail q.tail -1 endif
28
procedure printQueue (input q: queue) deklarasi Deskripsi if isEmpty(q)=TRUE then write(‘Queue Kosong’) else for iq.head to q.tail do write(q.nama[i] ) endfor endif
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.