Anda di halaman 1dari 19

LAPORAN PRAKTIKUM RESMI

STACK




Disusun oleh :
Albert Sugihartono
201301018

Dosen pengampu :
Yosef Murya Kusuma Ardhana.S.T., M.Kom





JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO
PURWOKERTO
2014
2

BAB I
TEORI DASAR

1. Pengantar
Stack merupakan bentuk khusus dari struktur data, dimana node yang ditambahkan ke dalam
list hanya pada kepalanya atau dengan kata lain prinsip pengolahannya adalah last-in first-
out (LIFO). Ada dua operasi utama yaitu push(memasukkan node ke dalam stack) dan
pop(mengambil node dari stack). Operasi lainnya adalah ISEMPTY, ISFULL, dan CLEAR.
Untuk menentukan jumlah maksimum elemen stack, dapat dideklarasikan terlebih dahulu
preprocessor define. Sebagai contoh adalah define MAX_STACK. Contoh
pendeklarasiannya:


TOP of STACK merupakan elemen teratas dalam stack. Jika TOP of STACK terus bergerak
hingga mencapai MAX_STACK, maka stack akan penuh.
Elemen pada stack diindikasikan oleh indeks yaitu dari indeks 0 hingga indeks ke-n. Hal ini
dikarenakan sistem stack menggunakan fungsi dari array.













#define MAX_STACK 10
3

BAB II
PENJELASAN PROGRAM

Pada penjelasan program bab ini dijelaskan mengenai bagaimana melakukan pemrograman
C++ program stack.cpp, push.cpp dan pop.cpp
Listing program stack.cpp
/*
* stack.cpp
*
* Created on: May 20, 2014
* Author: STIKOM109
*/
#include <iostream>
#include <cstring>
#define MAX_STACK 10
using namespace std;


struct STACK
{
int top;
char data[10][10];
};STACK tumpuk;

void inisialisasi()
{
tumpuk.top=-1;
}

int IsFull()
{
if(tumpuk.top==MAX_STACK-1)
return 1;
else
return 0;
}

int IsEmpty()
{
if(tumpuk.top==-1)
return 1;
else
return 0;
}

void Push(char d[10])
4

{
tumpuk.top++;
strcpy(tumpuk.data[tumpuk.top],d);
}

void Pop()
{
cout<<"Data yang terambil : "<<tumpuk.data[tumpuk.top];
tumpuk.top--;
}

void TampilStack()
{
for(int i=tumpuk.top;i>=0;i--)
{
cout<<"Tampil data : "<<tumpuk.data[i]<<endl;
}
}

void Clear()
{
tumpuk.top=-1;
}

int main()
{
int pil;
inisialisasi();
char dt[10];
do{
cout<<"1. Push"<<endl;
cout<<"2. Pop"<<endl;
cout<<"3. Tampilkan data"<<endl;
cout<<"4. Clear"<<endl;
cout<<"5. Keluar"<<endl;
cout<<"Pilihan : ";
cin>>pil;

switch(pil)
{
case 1:if(IsFull() != 1)
{
cout<<"Data = ";
cin>>dt;
Push(dt);
}
else
cout<<"\nStack Penuh\n";
break;
case 2:if(IsEmpty() != 1)
Pop();
5

else
cout<<"\nStack kosong";
break;
case 3:if(IsEmpty() != 1)
TampilStack();
else
cout<<"\n Stack Kosong";
break;
case 4:Clear();
cout<<"\n Stack sudah kosong";
break;


}

}
while(pil!=5);
return 0;
}
Output program stack.cpp
Hasil output dari stack.cpp adalah sebagai berikut :


Penjelasan program stack.cpp
Berikut penjelasan dari program stack.cpp :
1. Program diatas merupakan program stack. Pertama kali, jumlah maksimum stack ditentukan
dengan menggunakan preprocessor define dengan nama define yaitu MAX_STACK 10,
sehingga hal ini mengset bahwa jumlah maksimum elemen yang dapat dimasukkan ke dalam
6

stack adalah 10. Program menggunakan preprocessor #include <cstring> yang digunakan
untuk operasi fungsi manipulasi string pada program yaitu strcpy yang berfungsi untuk
mengcopy string yang satu ke string lainnya.
2. Pada program dideklarasikan struct STACK yang berisi member top untuk stack mencapai
top of stack dan data untuk memasukkan data stack.
3. Stack memiliki persamaan untuk mengetahui apakah stack sudah penuh atau belum dimana
persamaan tersebut dideklarasikan pada prosedur IsFull. Persamaannya adalah Top of stack =
max_stack 1; dimana apabila bernilai TRUE maka stack penuh jika tidak maka sebaliknya
stack belum penuh.
4. Program menggunakan fungsi perulangan do-while sehingga jika user belum memilih pilihan
keluar, maka user dapat melakukan salah satu operasi stack tersebut. Untuk pemilihan operasi
stack, digunakan fungsi pemilihan switch dengan variabel pil sebagai acuan case (1-5). Case
pertama merupakan case untuk operasi Push dengan menggunakan prosedur IsFull untuk
memberi peringatan jika stack yang di push elemennya telah mencapai batas maksimumnya,
dan memanggil prosedur Push. Case kedua digunakan untuk operasi pop. Pada operasi pop,
digunakan decrement pada top (tumpuk.top--) dengan syarat IsEmpty bukan 1. Case ketiga
digunakan untuk menampilkan data stack yang ada dengan memanggil prosedur
TampilStack();. Case keempat digunakan untuk operasi Clear yang memanggil prosedur
Clear dimana top of stack diassignment sama dengan -1 yang mengindikasikan bahwa stack
sudah kosong.
Tugas Praktikum
Pada tugas praktikum ini merupakan program operasi dalam stack yaitu push dan pop dengan
user dapat menentukan jumlah maksimum elemen stack yang dapat dimasukkan.
Program praktikum push.cpp
/*
* push.cpp
*
* Created on: May 25, 2014
7

* Author: ALBERT
*/

#include <iostream>
#include <cstring>
using namespace std;

struct STACK
{
int top;
char data[10][10];
int MAX_STACK;
}; STACK tumpuk;

void insialisasi()
{
tumpuk.top=-1;
}

int IsFull()
{
if(tumpuk.top == tumpuk.MAX_STACK-1)
return 1;
else
return 0;
}

int IsEmpty()
{
if(tumpuk.top == -1)
return 1;
else
8

return 0;
}

int MAX_STACK(int n)
{
tumpuk.MAX_STACK=n;

return 0;
}

void Push(char d[10])
{
tumpuk.top++;
strcpy(tumpuk.data[tumpuk.top],d);
}

void TampilStack()
{
for(int i=tumpuk.top;i>=0;i--)
{
cout<<"Tampil data : "<<tumpuk.data[i]<<endl;
}
}

int main()
{
int pilihan,x;
char dt[10];
cout<<"Masukkan batas maksimum stack : ";
cin>>x;
do
{
9

cout<<"\n1. Push \n";
cout<<"2. Tampilkan data \n";
cout<<"3. Keluar \n";
cout<<"Pilihan : ";
cin>>pilihan;

switch (pilihan)
{
case 1:
if(IsFull() != 1)
{
cout<<"Data = ";
cin>>dt;
MAX_STACK(x);
Push(dt);
}
else
cout<<"\n Stack Penuh!\n";
break;
case 2:
if(IsEmpty()!=1)
TampilStack();
else
cout<<"\n Stack kosong! \n";
break;
}

}while(pilihan !=3);

return 0;
}

10

Output program push.cpp

Penjelasan program push.cpp
Berikut penjelasan dari program push.cpp :
1. Pada program push.cpp, user dapat mengset berapa jumlah maksimum elemen stack yang
mungkin dimasukkan. Maka dari itu, MAX_STACK tidak dideklarasikan dengan
preprocessor #define melainkan dimasukkan sebagai member ke dalam struct STACK
sehingga MAX_STACK sebagai member struct dapat diakses oleh user dalam main
program. Program menggunakan preprocessor #include <cstring> yang digunakan untuk
operasi fungsi manipulasi string pada program yaitu strcpy yang berfungsi untuk
mengcopy string yang satu ke string lainnya.
2. Stack memiliki persamaan untuk mengetahui apakah stack sudah penuh atau belum
dimana persamaan tersebut dideklarasikan pada prosedur IsFull. Persamaannya adalah
Top of stack = max_stack 1; dimana apabila bernilai TRUE maka stack penuh jika tidak
maka sebaliknya stack belum penuh.
3. Agar MAX_STACK dapat didefinisikan valuenya, maka MAX_STACK dibuat ke dalam
sebuah fungsi yaitu int MAX_STACK(int n) dimana n nantinya merupakan variable untuk
menapung value jumlah maksimum stack.
11

4. Program menggunakan fungsi perulangan do-while sehingga jika user belum memilih
pilihan keluar, maka user dapat melakukan salah satu operasi stack tersebut. User pertama
kali akan diminta untuk mengset jumlah maksimum stack. Pemasukkan ini dilakukan di
luar loop do-while agar proses pengesetan maksimum stack tidak berulang-ulang. Value
untuk maksimum stack diindikasikan oleh variabel x.Untuk pemilihan operasi stack,
digunakan fungsi pemilihan switch dengan variabel pilihan sebagai acuan case (1-3). Case
pertama merupakan operasi Push dengan menggunakan prosedur IsFull untuk memberi
peringatan jika stack yang di push elemennya telah mencapai batas maksimumnya, dan
memanggil prosedur Push. Pada case ini pula, fungsi MAX_STACK dipanggil untuk
memberikan batas maksimum stack yang telah dimasukkan oleh user sebelumnya. Case
kedua digunakan untuk menampilkan data stack yang ada dengan memanggil prosedur
TampilStack();. Case ketiga digunakan untuk keluar dimana digunakan untuk
menghentikan proses looping do-while.
Program praktikum pop.cpp
/*
* pop.cpp
*
* Created on: May 25, 2014
* Author: AAT
*/

#include <iostream>
#include <cstring>
using namespace std;

struct STACK
{
12

int top;
char data[10][10];
int MAX_STACK;
}; STACK tumpuk;
void insialisasi()
{
tumpuk.top=-1;
}
int IsFull()
{
if(tumpuk.top == tumpuk.MAX_STACK-1)
return 1;
else
return 0;
}
int IsEmpty()
{
if(tumpuk.top == -1)
return 1;
else
return 0;
}
int MAX_STACK(int x)
{
tumpuk.MAX_STACK=x;
13

return 0;
}
void Push(char d[10])
{
tumpuk.top++;
strcpy(tumpuk.data[tumpuk.top],d);
}
void Pop()
{
cout<<"Data yang terambil = "<<tumpuk.data[tumpuk.top];
tumpuk.top--;
}
void TampilStack()
{
for(int i=tumpuk.top;i>=0;i--)
{
cout<<"Tampil data : "<<tumpuk.data[i]<<endl;
}
}
int main()
{
int pil,n;
char dt[10];
cout<<"Masukkan jumlah maksimum stack : ";
cin>>n;
14

do
{
cout<<"\n1. Push \n";
cout<<"2. Pop\n";
cout<<"3. Tampilkan data \n";
cout<<"4. Keluar \n";
cout<<"Pilihan : ";
cin>>pil;
switch (pil)
{
case 1:
if(IsFull() != 1)
{
cout<<"Data = ";
cin>>dt;
MAX_STACK(n);
Push(dt);
}
else
cout<<"\n Stack Penuh!\n";
break;
case 2:
if(IsEmpty() !=1)
Pop();
else
15

cout<<"Stack kosong! \n";
break;
case 3:
if(IsEmpty()!=1)
TampilStack();
else
cout<<"\n Stack kosong! \n";
break;
}
}while(pil !=4);
return 0;
}

Output program pop.cpp
Operasi input data

Operasi pop
16


Penjelasan program pop.cpp
Berikut penjelasan dari program pop.cpp:
1. Pada program push.cpp, user dapat mengset berapa jumlah maksimum elemen stack yang
mungkin dimasukkan. Maka dari itu, MAX_STACK tidak dideklarasikan dengan
preprocessor #define melainkan dimasukkan sebagai member ke dalam struct STACK
sehingga MAX_STACK sebagai member struct dapat diakses oleh user dalam main
program. Program menggunakan preprocessor #include <cstring> yang digunakan untuk
operasi fungsi manipulasi string pada program yaitu strcpy yang berfungsi untuk
mengcopy string yang satu ke string lainnya.
2. Stack memiliki persamaan untuk mengetahui apakah stack sudah penuh atau belum
dimana persamaan tersebut dideklarasikan pada prosedur IsFull. Persamaannya adalah
Top of stack = max_stack 1; dimana apabila bernilai TRUE maka stack penuh jika tidak
maka sebaliknya stack belum penuh.
3. Agar MAX_STACK dapat didefinisikan valuenya, maka MAX_STACK dibuat ke dalam
sebuah fungsi yaitu int MAX_STACK(int n) dimana n nantinya merupakan variable untuk
menapung value jumlah maksimum stack.
5. Program menggunakan fungsi perulangan do-while sehingga jika user belum memilih pilihan
keluar, maka user dapat melakukan salah satu operasi stack tersebut. User pertama kali akan
diminta untuk mengset jumlah maksimum stack. Pemasukkan ini dilakukan di luar loop do-
while agar proses pengesetan maksimum stack tidak berulang-ulang. Value untuk maksimum
stack diindikasikan oleh variabel x.Untuk pemilihan operasi stack, digunakan fungsi
pemilihan switch dengan variabel pilihan sebagai acuan case (1-5). Case pertama merupakan
17

operasi Push dengan menggunakan prosedur IsFull untuk memberi peringatan jika stack yang
di push elemennya telah mencapai batas maksimumnya, dan memanggil prosedur Push. Pada
case ini pula, fungsi MAX_STACK dipanggil untuk memberikan batas maksimum stack
yang telah dimasukkan oleh user sebelumnya. Case kedua digunakan untuk operasi pop. Pada
operasi pop, digunakan decrement pada top (tumpuk.top--) dengan syarat IsEmpty bukan 1.
Case ketiga digunakan untuk menampilkan data stack yang ada dengan memanggil prosedur
TampilStack();. Case keempat digunakan untuk operasi Clear yang memanggil prosedur
Clear dimana top of stack diassignment sama dengan -1 yang mengindikasikan bahwa stack
sudah kosong. Untuk case ke lima digunakan untuk keluar yang mana menghentikan proses
loop do-while.


















18

BAB III
KESIMPULAN

Kesimpulan akan apa yang dapat dipelajari dalam praktikum ini adalah bahwa bahwa stack
merupakan bentuk khusus dari linear list yang pemasukkan dan penghapusan elemennya hanya
dapat dilakukan pada satu posisi yaitu last list. Prinsip stack yaitu last-in first-out atau disingkat
LIFO. Stack memiliki beberapa operasi yaitu IsEmpty yang digunakan untuk memeriksa apakah
stack kosong, IsFull yang digunakan untuk memeriksa apakah stack sudah penuh, Pop digunakan
untuk menghapus elemen paling atas (top), Push untuk menyisipkan elemen stack dan Clear
untuk mengosongkan stack. Jumlah maksimum stack umumnya dideklarasikan terlebih dahulu
dengan menggunakan preprocessor #define untuk memberikan nilai absolut. Namun, ada kalanya
sebuah stack dapat ditentukan batas maksimumnya ditentukan oleh user dengan memasukkan
MAX_STACK ke dalam struct dan membuat sebuah fungsi untuknya sehingga MAX_STACK
dapat diakses di dalam main program. Untuk stack, memiliki persamaan yang digunakan untuk
menentukan apakah sebuah stack sudah penuh atau belum yaitu dengan Top of stack =
Max_stack 1 yang mana jika bernilai TRUE maka stack full.









19

Sumber Referensi
Kristanto, Andi. 2003. Struktur Data Dengan C++
Yogyakarta : Graha Ilmu
Ardhana. YM Kusuma. 2013. Struktur Data Dalam Ilustrasi Eclipse Indigo C++
Yogyakarta : CAPS (Center of Academic Publishing Service)