You are on page 1of 10

LAPORAN PRAKTIKUM RESMI

STACK





Disusun oleh :
Analis Hasby Azizah
201301043

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

A. Stack
Menurut Y.M. Kusuma Ardhana dalam bukunya yang berjudul Struktur Data dalam Ilustrasi
Eclipse Indigo C++ , stack adalah tumpukan yang berfungsi untuk melakukan pemasukan
atau penghapusan data pada suatu posisi. Stack atau tumpukan merupakan bentuk khusus
dari Linear List yang pemasukan dan penghapusan elmennya hanya dapat dilakukan pada
satu posisi, yaitu akhir list (Top). (Struktur Data dalam Ilustrasi Eclipse indigo C++, 2012).
Stack memiliki prinsip Last-In-First-Out (LIFO) yang berarti benda pertama yang masuk
akan menjadi benda terakhir yang keluar.
Beberapa macam oprasi dalam stack antara lain :
1. Isemply : Untuk memeriksa apakah stcak kosong.
2. Isfull : Untuk memeriksa apakah stack sudah penuh.
3. Push : Untuk menambahkan item pada posisi paling atas (TOP).
4. Pop : Untuk menghapus item paling atas (TOP).
5. Clear : untuk mengosongkan stack.
Deklarasi Max_Stack
#define max_stack 6
Deklarasi Stack dengan struct dan array data :
Typedef struct stack{
Int top;
Int data[6];
}
Inisialisasi pada stack :
Array dalam C++ dimulai dari 1 maka isi TOP dengan -1, yang berarti stack sudah
kosong.
Elmen teratas dalam stack adalah TOP.
Stcak akan penuh apabila TOP of STACK sudah mencapai MAX of STACK.

3

B. Isempety
Fungsi yang menentukan apakah stcak sudah kosong atau belum dengan tanda top bernilai
kurang dari nol atau -1.
C. Isfull
Fungsi yang memeriksa apakah stack sudah penuh atau belum. Stack penuh stack penuh jika
puncak stack berada tepat dibawah jumlah maksimum yang dapat ditampung stack atau
dengan kata lain TOP = MAX_STACK-1.
D. Push
Fungsi ini menambahkan item atau elmen ke dalam stack dan tidak bisa dilakukan lagi jika
stack sudah penuh.
E. Pop
Fungsi ini mengambil elmen teratas dari stack dengan syarat stack tidak boleh kosong.
F. Clear
Fungsi ini akan mengkosongkan stack dengan cara mengeset Top dengan -1. Jika Top
bernilai kurang dari nol, maka stack dianggap kosong.













4

BAB II
PENJELASAN PROGRAM

A. Latihan Praktikum
Listing Program 10.1
/*
* stack.cpp
*
* Created on: May 31, 2014
* Author: my
*/


#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])
{
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;
5

}
}
void Clear()
{
tumpuk.top=-1;
}
int main(){
int pil;
inisialisasi();
char dt[10];
do{
cout<<"1. Push \n";
cout<<"2. Pop \n";
cout<<"3. Tampilkan data \n";
cout<<"4. Clear \n";
cout<<"5. Keluar \n";
cout<<"Pilihan : ";
cin>>pil;

switch(pil){
case 1: if(IsFull()!=1){
cout<<"Data = ";cin>>dt;
Push(dt);
}else cout<<"\n Stack penuh! \n";
break;
case 2 : if(IsEmpty()!=1)
Pop();
else
cout<<"\n Stack kosong! \n";
break;
case 3 : if(IsEmpty()!=1)
TampilStack();
else
cout<<"\n Stack kosong! \n";
break;
case 4 : Clear();
cout<<"\n Stack sudah kosong! \n";
break;
}
}while (pil !=5);
return 0;
}






6

Output Program 10.1
Hasil output dari Program 10.1 adalah sebagai berikut :




Penjelasan Program 10.1
Berukut penjelasan dari Listing Program 10.1 :
1. Tanda yang diawali dengan /* dan diakhiri tanda */ merupakan script untuk membuat
sebuah komentar pada pemrograman C++ yang jika didalamnya terdapat sebuah perintah
atau teks maka ketika program dirunning atau dijalankan tidak akan dibaca oleh compiler.
2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk
menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum
kompilasi dimulai
3. <iostream> berfungsi untuk menampilkan deklarasi yang ada pada cout.
4. using namespace std; untuk mengakses perintah perintah yang ada pada library standard.
7

5. Int main() untuk mengawali suatu program.
6. #define MAX_STACK 10 untuk mendefinisikan MAX_STACK adalah 10.
7. Cout<< .... mengeluarkan bagian dari program.
8. Cin>> untuk menginputkan.
9. Isempty untuk memeriksa apakah stack sudah kosong.
10. Isfull untuk memeriksa apakah stack sudah penuh.
11. Push untuk menambah item posisi paling atas (TOP).
12. Pop untuk menghapus item posisi paling atas (TOP).
13. Clear untuk mengkosongkan stack.

B. Tugas Praktikum
Listing Program 10.2
/*
* stackcin.cpp
*
* Created on: Jun 2, 2014
* Author: my
*/

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

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

void inisialisasi()
{
tumpuk.top=-1;
}
int IsFull()
{
if (tumpuk.top==maxstack-1)return 1; else return 0;
}
int IsEmpty()
{
if(tumpuk.top == -1)return 1; else 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--;
8

}
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<<"Masukkan MAX_STACK ="<<endl;
cin>>tumpuk.maxstack;
cout<<"1. Push \n";
cout<<"2. Pop \n";
cout<<"3. Tampilkan data \n";
cout<<"4. Clear \n";
cout<<"5. Keluar \n";
cout<<"Pilihan : ";
cin>>pil;

switch(pil){
case 1: if(IsFull()!=1){
cout<<"Data = ";cin>>dt;
Push(dt);
}else cout<<"\n Stack penuh! \n";
break;
case 2 : if(IsEmpty()!=1)
Pop();
else
cout<<"\n Stack kosong! \n";
break;
case 3 : if(IsEmpty()!=1)
TampilStack();
else
cout<<"\n Stack kosong! \n";
break;
case 4 : Clear();
cout<<"\n Stack sudah kosong! \n";
break;
}
}while (pil !=5);
return 0;
}




9

Output Program 10.2



Penjelasan Program 10.2
Berikut penjelasan program 10.2 :
1. Tanda yang diawali dengan /* dan diakhiri tanda */ merupakan script untuk membuat
sebuah komentar pada pemrograman C++ yang jika didalamnya terdapat sebuah perintah
atau teks maka ketika program dirunning atau dijalankan tidak akan dibaca oleh
compiler.
2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk
menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum
kompilasi dimulai
3. <iostream> berfungsi untuk menampilkan deklarasi yang ada pada cout.
4. using namespace std; untuk mengakses perintah perintah yang ada pada library
standard.
5. Int main() untuk mengawali suatu program.
6. #define MAX_STACK 10 untuk mendefinisikan MAX_STACK adalah 10.
7. Cout<< .... mengeluarkan bagian dari program.
8. Cin>> untuk menginputkan.
9. Isempty untuk memeriksa apakah stack sudah kosong.
10. Isfull untuk memeriksa apakah stack sudah penuh.
11. Push untuk menambah item posisi paling atas (TOP).
12. Pop untuk menghapus item posisi paling atas (TOP).
13. Clear untuk mengkosongkan stack.
10

14.
BAB III
KESIMPULAN

Stack merupakan tumpukan yang pemasukkan dan penghapusan elmennya dilakukan pada satu
posisi dengan prinsip LIFO (Last-In-First-Out) yang berarti yang terakhir masuk menjadi yang
pertama kali keluar.


Daftar Pustaka
Ardhana, Y.M. Kusuma 2012. Strucktur Data dalam Ilustrasi Eclipse Indigo C++. Yogyakarta :
CAPS ( Center of Academic Publishing Service).

You might also like