Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Stack.

Presentasi serupa


Presentasi berjudul: "Stack."— Transcript presentasi:

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 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 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 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."

Presentasi serupa


Iklan oleh Google