STRUKTUR DATA (3) STACK
Ilustrasi stack
Ilustrasi stack
Stack = tumpukan Secara sederhana tumpukan bisa diartikan sebagai kumpulan data yang seolah-olah ada data yang diletakkan di atas data yang lainnya. tumpukan dapat dilakukan manipulasi data dimana data dapat ditambahkan dan dihapus selalu dilakukan pada bagian akhir data, yang disebut dengan top of stack Stack bersifat LIFO (Last In First Out) “Benda yang terakhir masuk ke dalam stack akan menjadi yang pertama keluar dari stack TV VCD Compo
Penggunaan stack Pengalamatan memory penempatan ruang data dan aplikasi lain penguji tanda kurung (matching parentheses) konversi dari notasi infix menjadi notasi postfix
Operasi Stack 4 3 2 1 O U T I N create : digunakan untuk membuat stack baru yang masih kosong Push : digunakan untuk menambah item pada stack pada tumpukan paling atas Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas Empty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong Full : fungsi yang digunakan untuk mengecek apakah stack sudah penuh
Operasi Push (menambah data)
Operasi Pop (mengambil data)
Detail Push & Pop
Deklarasi stack Const MaxElemen=255; Type Tumpukan=record Isi :array[1..MaxElemen] of tipedata Atas :0..maks_stack; end; var T:Tumpukan;
Operasi create procedure create(var T:Tumpukan); begin T.Atas:=0; end;
Operasi full function penuh(T:Tumpukan):boolean; begin penuh:=(T.Atas=MaxElemen); end;
Operasi empty function kosong(T:Tumpukan):boolean; begin kosong:=(T.Atas=0); end;
procedure push(var T:Tumpukan; X:integer); begin if T procedure push(var T:Tumpukan; X:integer); begin if T.Atas=MaxElemen then writeln(‘Tumpukan sudah penuh’) {prosedur untuk memberitahukan stack penuh} else T.atas:=T.Atas+1; T.Isi[T.atas]:=x; end;
Operasi push procedure push(var T:Tumpukan; X:integer); begin if T.Atas=MaxElemen then writeln(‘Tumpukan sudah penuh’) {prosedur untuk memberitahukan stack penuh} else T.atas:=T.Atas+1; T.Isi[T.atas]:=x; end;
Operasi pop procedure pop(var T:Tumpukan); begin if T.atas=0 then Writeln(‘Tumpukan sudah kosong’) {prosedur untuk memberitahukan stack kosong} else T.Isi[T.Atas]:=x; T.Atas:=T.Atas-1; end;