STRUKTUR DATA TUMPUKAN STACK PENGERTIAN TUMPUKAN Tumpukan adalah

  • Slides: 10
Download presentation
STRUKTUR DATA TUMPUKAN (STACK)

STRUKTUR DATA TUMPUKAN (STACK)

PENGERTIAN TUMPUKAN � Tumpukan adalah suatu kumpulan data yang seolah-olah ada data yang diletakkan

PENGERTIAN TUMPUKAN � Tumpukan adalah suatu kumpulan data yang seolah-olah ada data yang diletakkan di atas data lain. � Misalnya kita mempunyai dua buah kotak yang kita tumpuk, sehingga kotak kita letakkan di atass kotak yang lain. Jika kemudian tumpukan dua kotak itu kita tambah dengan kotak ketiga, keempat dan seterusnya maka akan kita peroleh sebuah tumpukan kotak, yang terdiri dari N kotak.

ILUSTRASI TUMPUKAN menambahkan Tumpukan bisa diilustrasikan seperti gambar disamping. dari gambar kita bisa mengatakan

ILUSTRASI TUMPUKAN menambahkan Tumpukan bisa diilustrasikan seperti gambar disamping. dari gambar kita bisa mengatakan bahwa kotak B ada diatas kotak A dan ada di bawah kotak C. menghapus F E D C B A atas Dari gambar ini kita hanya bisa menambah atau mengambil sebuah kotak lewat satu ujung, yaitu ujung bagian atas. Dapat dilihat pula bahwa tumpukan merupakan kumpulan data yang sifatnya dinamis, artinya kita bisa menambah dan mengambil data darinya. Dengan memperhatikan ilustrasi ini maka kita bisa melihat bahwa tumpukan merupakan suatu senarai (list) yang mem punyai watak “masuk terakhir keluar pertama” atau disebu LIFO (Last In First Out).

PENYAJIAN TUMPUKAN PADA PASCAL � Tumpukan = Kumpulan Data � Array bisa digunakan untuk

PENYAJIAN TUMPUKAN PADA PASCAL � Tumpukan = Kumpulan Data � Array bisa digunakan untuk menyajikan tumpukan. � Namun pada kumpulan data biasanya terdiri dari elemen-elemen yang bervariasi(dinamis), sedangkan untuk array elemennya statis. � Untuk elemen yang dinamis bisa digunakan record.

DEKLARASI TUMPUKAN Const Max. Elemen = 255; Type Tumpukan = record isi : array[1.

DEKLARASI TUMPUKAN Const Max. Elemen = 255; Type Tumpukan = record isi : array[1. . Max. Elemen] of Integer; atas : 0. . Max. Elemen end; Jika T. Atas = 5, berarti dalam tumpukan ada 5 elemen, yaitu T. isi[1], T. isi[2], …. . , T. isi[5]. Jika data Var T : Tumpukan; Dengan deklarasi di atas kita menganggap bahwa elemen tumpukan T, yang tersimpan dalam larik T. Isi adalah bertipe integer dan banyaknya elemen tumpukan maksimum adalah sebesar Max. Elemen, yang dalam hal ini 255 elemen. Pada medan Atas, nilainya menunjukkan banyaknya elemen yang ada dalam suatu tumpukan, yang sekaligus menunjukkan posisi elemen teratas dalam tumpukan yang dimaksud. yang diambil, maka nilai Medan T. Atas dikurangi 1 menjadi 4, yang berarti T. isi[4] adalah elemen teratas. Jika data ditambah maka nilai T. atas ditambah dengan 1 menjadi 6, sehingga T. isi[6] adalah elemen teratas.

OPERASI PADA TUMPUKAN � Ada dua operasi dasar yang bisa kita laksanakan pada sebuah

OPERASI PADA TUMPUKAN � Ada dua operasi dasar yang bisa kita laksanakan pada sebuah tumpukan, yaitu � Operasi menyisipkan data, atau mem-push data. � Operasi menghapus data atau mem-plop data. � Karena dalam tumpukan kita bisa mempush data, maka tumpukan juga sering disebut pusdown list.

OPERASI PUSH Procedure PUSH(var T : Tumpukan; X : integer); Begin Procedure ini akan

OPERASI PUSH Procedure PUSH(var T : Tumpukan; X : integer); Begin Procedure ini akan menyisipkan tempat untuk x yang akan dipush ke T. Atas : = T. Atas + 1; dalam tumpukan, yaitu dengan menambah nilai medan T. Atas T. Isi[T. Atas] : = X; dengan 1 dan kemudian menyisipkan x ke dalam larik T. isi. End; Dari procedure ini, masalah akan timbul saat T. Atas sama dengan Max Elemen dan jika kita mempush lagi maka akan terjadi overflow pada array T. Isi, disebabkan karena deklarasi banyaknya elemen array tersebut tidak mencukupi. Sehingga procedure diatas berpu dirubah menjadi : Procedure PUSH (var T : Tumpukan; X : Integer); Begin If T. Atas = Max. Elemen then write. Ln (‘Tumpukan Sudah Penuh’) else begin T. Atas : = T. Atas + 1; T. Isi[T. Atas] : = x end End;

OPERASI POP Procedure POP (var T : Tumpukan); Begin if T. Atas = 0

OPERASI POP Procedure POP (var T : Tumpukan); Begin if T. Atas = 0 then write. Ln (‘Tumpukan Sudah Kosong’); else T. Atas : = T. Atas -1 End;

CONTOH PEMAKAIAN TUMPUKAN � Contoh Program Untuk Membalikkan Kalimat. Dalam hal ini yang dibalik

CONTOH PEMAKAIAN TUMPUKAN � Contoh Program Untuk Membalikkan Kalimat. Dalam hal ini yang dibalik adalah seluruh kalimat bukan per kata. � Input : BELAJAR PASCAL ADALAH MUDAH DAN MENYENANGKAN � Output : NAKGNANEYNEM NAD HADUM HALADA LACSAP RAJALBE

Uses wincrt; Const Elemen = 255; Type S 255 = String[Elemen]; Tumpukan = record

Uses wincrt; Const Elemen = 255; Type S 255 = String[Elemen]; Tumpukan = record isi : s 255; atas : 0. . elemen end; Var T : Tumpukan; I : Integer; Kalimat : S 255; Procedure Awalan(Var T : Tumpukan); Begin T. Atas : = 0 End; Procedure PUSH (Var T : Tumpukan; X : char); Begin T. Atas : = T. Atas + 1; T. Isi[T. Atas] : = X End; Function POP (Var T : Tumpukan) : char; Begin POP : = T. Isi[T. Atas]; T. Atas : = T. Atas - 1; End; {Program Utama} Begin clrscr; Awalan(T); write ('Masukan sembarang kalimat : '); Read. Ln (Kalimat); Write. Ln; { mempush kalimat ke dalam tumpukan} For I : = 1 to length(Kalimat) do PUSH(T, Kalimat[I]); {mempop isi tumpukan sehingga diperoleh kalimat yang dibaca terbalik} For I : = 1 to length(Kalimat) do write(POP(T)); Write. Ln; End.