Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Stack. STACK / TUMPUKAN  Struktur data  Last In First Out (LIFO)  Operasi Stack 1)PUSH penambahan elemen baru 2)POP pengapusan elemen.

Presentasi serupa


Presentasi berjudul: "Stack. STACK / TUMPUKAN  Struktur data  Last In First Out (LIFO)  Operasi Stack 1)PUSH penambahan elemen baru 2)POP pengapusan elemen."— Transcript presentasi:

1 Stack

2 STACK / TUMPUKAN  Struktur data  Last In First Out (LIFO)  Operasi Stack 1)PUSH penambahan elemen baru 2)POP pengapusan elemen

3 STACK REPRESENTASI STATIS  Implementasi menggunakan ARRAY  Kondisi OVER FLOW  kondisi UNDER FLOW

4 PSEUDOCODE STACK Algoritma Stack {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) printStack(St) write(‘ ’) pop(St) printStack(St) write(‘ ’)

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 else s.top  s.top + 1 s.nama[s.top]  nama s.nilai[s.top]  nilai endif

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 else write(‘Stack Kosong’) endif procedure printStack (input s: stack) {Menampilkan isi Stack ke layar} Deklarasi i : integer Deskripsi if s.top = -1 then write (‘STACK KOSONG’) else for i  1 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 Queue (13) Tampil() – 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 deskripsi 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 else q.tail  q.tail + 1 q.nama[q.tail]  nama endif

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 else for i  q.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 i  q.head to q.tail do write(q.nama[i] ) endfor endif


Download ppt "Stack. STACK / TUMPUKAN  Struktur data  Last In First Out (LIFO)  Operasi Stack 1)PUSH penambahan elemen baru 2)POP pengapusan elemen."

Presentasi serupa


Iklan oleh Google