Modul_Prak_SD_New_10.pdf
-
Upload
lyonkk-edhant -
Category
Documents
-
view
217 -
download
0
Transcript of Modul_Prak_SD_New_10.pdf
-
7/25/2019 Modul_Prak_SD_New_10.pdf
1/4
50
MODUL X
Stack
1.
Dasar teori
a.
Pengertian stack
Salah satu konsep yang efektif untuk menyimpan dan mengambil data adalah
terakhir masuk sebagai yang pertama keluar (Last In First Out / LIFO). Dengan konsepini, pengambilan data akan berkebalikan urutannya dengan penyimpanan data.
Stack adalah sebuah kumpulan data dimana data yang diletakkan diatas data yang
lain. Dengan demikian stack adalah struktur data yang menggunakan konsep LIFO.
Dengan demikian, elemen terakhir yang disimpan dalam stack menjadi elemen
pertama yang diambil. Dalam proses komputasi, untuk meletakkan sebuah elemen
pada bagian atas dari stack, maka kita melakukan push. Dan untuk memindahkan dari
tempat yang atas tersebut, kita melakukan pop.
Untuk menjelaskan pengertian diatas kita mengambil contoh sebagai berikut.
Misalnya kita mempunyai dua buah kotak yang kita tumpuk, sehingga kotak kita
letakkan diatas kotak yang lain. Jika kemudian stack dua buah kotak tersebut kita
tambah dengan kotak ketiga dan seterusnya, maka akan kita peroleh sebuah stackkotak, yang terdiri dari N kotak.
Secara sederhana, sebuah stack bisa kita ilustrasikan seperti pada gambar
dibawah ini. Dari gambar tersebut, kita bisa mengatakan bahwa kotak b ada di atas
kotak 12 dan ada di bawah kotak 31. Dari gambar tersebut kita dapat melihat bahwa
kita hanya bisa menambah atau mengambil kotak lewat satu ujung, yaitu ujung bagian
atas. Nampak pula bahwa stack merupakan kumpulan data yang sifatnya dinamis,
artinya kita bisa menambah atau mengambil data darinya.
Tujuan :
1. Praktikan dapat memahami terminologi yang terkait dengan struktur datastack.
2. Praktikan dapat memahami operasi-operasi yang ada dalam stack.
3. Praktikan dapat mengidentifikasi permasalahan-permasalahanpemrograman yang harus diselesaikan dengan menggunakan stack,
sekaligus menyelesaikannya
-
7/25/2019 Modul_Prak_SD_New_10.pdf
2/4
51
b.
Penyajian Stack
Ada beberapa cara untuk menyajikan sebuah stack tergantung pada
permasalahan yang akan kita selesaikan. Kita dapat menggunakan array untuk
menyajikan sebuah stack, dengan anggapan bahwa banyaknya elemen maksimum
dari stack tersebut tidak akan melebihi batas maksimum banyaknya elemen dalam
array.
Pada saat ukuran stack, kalau kita teruskan menambahkan data lagi, akan terjadi
overflow. Dengan demikian perlu data tambahan untuk mencatat posisi ujung stack.
Dengan kebutuhan seperti itu, kita dapat menyajikan stack dengan menggunakan tipe
data struktur (struct) yang terdiri dari dua field. Field pertama bertipe array untuk
menyimpan elemen stack, medan kedua bertipe integer untuk mencatat posisi ujung
stack.
Berikut adalah contoh program untuk membuat stack dari kata:
#include"stdafx.h"
#include#include#include
usingnamespacestd;
voidmain(){
stack allwords;stringword;
constintmax = 5;
cout word;
allwords.push(word);}
cout
-
7/25/2019 Modul_Prak_SD_New_10.pdf
3/4
52
typedefcharitemtype;typedefstruct{
itemtypeitem[50];intcount;
} stack;
voidinitializestack(stack*s)
{s->count = 0;
}
intempty(stack*s)
{return(s->count == 0);
}
intfull(stack*s)
{return(s->count == MAXSTACK);
}
voidpush(itemtypex, stack*s){
if(full(s))printf("stack penuh !\n");
else{
s->item[s->count] = x;
++(s->count);}
}
intpop(stack*s)
{if(empty(s))
printf("stack kosong\n");
else{
--(s->count);return(s->item[s->count]);
}
}
voidmain()
{ inti;
charinput[50];stacktumpukan;
initializestack(&tumpukan);printf("masukkan kalimat :");gets_s(input);
MAXSTACK = strlen(input);for(i = 0; i0; i--)
{printf("%c", pop(&tumpukan));
-
7/25/2019 Modul_Prak_SD_New_10.pdf
4/4
53
}cout