stack_1

37
STACK Desak Made Dwi Utami Putra, M.Cs

Upload: de-guz-dwiluphiyan

Post on 26-Jan-2016

214 views

Category:

Documents


0 download

DESCRIPTION

file pdf stack

TRANSCRIPT

Page 1: STACK_1

STACKDesak Made Dwi Utami Putra, M.Cs

Page 2: STACK_1

Review Record

Page 3: STACK_1

What Is Record??

Kumpulan data yang memiliki tipe lebih dari satu.

Page 4: STACK_1

Bagaimana mendeklarasikan Record??

Type nama_record = record identifier_1 : tipe_data_1; : : identifier_n : tipe_data_n;

end;var variabel : nama_record;

Page 5: STACK_1

Bagaimana mengakses elemenRecord??

x.Namax.Usia x.Kota x.Kodepos

with x doBegin

NamaUsiaKota Kodepos

End

Langsung With..Do

Page 6: STACK_1

Linier List

Page 7: STACK_1

Linier List

Suatu struktur data umum yang berisi suatu kumpulan terurut dari elemen; jumlah elemen di dalam list dapat berubah-ubah.

Linier list A dinotasikan sebagai :A = [ A1, A2, ..., AT]Jika T = 0, maka A disebut “Empty List” atau “Null List”

Page 8: STACK_1

Suatu elemen dapat dihilangkan/dihapus dari sembarang posisi dalam linier list, dan dapat pula dimasukkan elemen baru sebagai anggota list.

Page 9: STACK_1

Stack

Page 10: STACK_1

What is Stack??

Tumpukan data yang seolah-olah ada data di atas data lain.

Suatu metode untuk Input dan hapus di dalam memori komputer.

Konsep utama dalam STACK adalah LIFO (Last In First Out).

Page 11: STACK_1

Penghapusan serta pemasukan elemen pada stack hanya dapat dilakukan di satu posisi, yakni posisi akhir.

Posisi ini disebut puncak atau top dari stack.

Page 12: STACK_1

Tumpukan Buku

Page 13: STACK_1

Tumpukan Koin

Page 14: STACK_1

Tumpukan Baju

Page 15: STACK_1

Stack adalah suatu bentuk khusus dari linier list, dengan operasi penyisipan dan penghapusan dibatasi hanya pada satu sisinya, yaitu puncak stack (TOP).

Page 16: STACK_1

Elemen teratas dari stack dinotasikan sebagai TOP(S).

Untuk stack S = [S1, S2, S3, ..., ST] maka TOP(S) = ST

Jumlah elemen di dalam stack kita notasikan dengan NOEL(S). NOEL(S) menghasilkan nilai integer.

Untuk stack S = [S1, S2, S3, ..., ST] maka NOEL (S) = T.

Page 17: STACK_1

Ilustrasi Stack

Terdapat sebuah bejana/gelas yang dimasukan sebuah kotak-kotak. Pertama adalah kotak A dimasukanSelanjutnya kotak B diletakkan di atas kotak A.Demikian juga dengan kotak C diletakkan di atas kotak B Hingga kotak D dimasukkan, yang berada di atas kotak C.

Page 18: STACK_1

TOP (tumpukan) = DNOEL (tumpukan) = 4

Page 19: STACK_1

A

B

C

D TopA

B

C

D Top

A B C D

Top

ABCD

Top

Page 20: STACK_1

Operasi Pada Stack

Operator penyisipan (insertion) : PUSH

Operator penghapusan (deletion) : POP

Operasi stack : LIFO (Last In First Out), yaitu : yang terakhir masuk yang pertama keluar.

Page 21: STACK_1

Ilustrasi

Sebagai Awal Tumpukan masih kosongNoel (Tumpukan) = 0Top (Tumpukan) = tidak terdefinisi

Page 22: STACK_1

Push

PUSH elemen ADiperoleh Tumpukan = [A]

A

Page 23: STACK_1

PUSH elemen BDiperoleh Tumpukan = [A,B]

A

B

Page 24: STACK_1

PUSH elemen CDiperoleh Tumpukan = [A, B, C]

AB

C

Page 25: STACK_1

PUSH elemen DDiperoleh Tumpukan = [A, B, C, D]

ABC

D

Page 26: STACK_1

Pop

Pop Tumpukan = [A,B,C,D]

ABCD

Page 27: STACK_1

Pop Tumpukan = [A,B,C]

ABC

Page 28: STACK_1

Pop Tumpukan = [A,B]

AB

Page 29: STACK_1

Pop Tumpukan = [A]

A

Page 30: STACK_1

Algoritma Awal

Pastikan posisi tumpukan kosongElemen yang terambil belum ada

Page 31: STACK_1

Deklarasi Awal

const MaxElemen = 255;

type Tumpukan = record

Isi : array[1..MaxElemen] of integer;

Atas : 0..MaxElemen;

end;

var T : Tumpukan;

Procedure awal

begin

t.atas :=0;

end;

Page 32: STACK_1

Algoritma Push

Pastikan tumpukan belum penuhInput satu persatu

Page 33: STACK_1

Deklarasi Push

procedure PUSH (var T : Tumpukan; nil = integer);

Begin

if (T.Atas = MaxElemen) then write(‘Tumpukan PENUH…!!’);

else

begin

T.Atas := T.Atas + 1;

T.Isi[T.Atas] := nil;

end;

end;

Page 34: STACK_1

Algoritma Pop

Pastikan tumpukan tidak kosongAmbil satu persatu atau lebih (optional)

Page 35: STACK_1

Deklarasi Pop

procedure POP (var T : Tumpukan);

Begin

if (T.Atas = 0) then

write(‘Tumpukan KOSONG…!!’);

else

begin

Write(‘nilai yang diambil : ’,T.Isi[T.Atas]);

T.Atas := T.Atas - 1;

end;

end;

Page 36: STACK_1
Page 37: STACK_1