Anda di halaman 1dari 20

LAPORAN PRAKTIKUM RESMI

BAB X STACK

Disusun oleh :
Christina Natalia Sunjaya
201301003

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

JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO
PURWOKERTO
2014

BAB I
TEORI DASAR
1. PENDAHULUAN
Stack atau tumpukan bentuk khusus dari Linier List yang
pemasukan dan penghapusan elemennya hanya dapat dilakukan
pada saty posisi, yaitu posisi akhir dari list (Top). Prinsip stack
adalah LAST-IN-FIRST-OUT (LIFO). Benda yang terakhir masuk
dalam stack akan menjadi benda pertama yang dikeluarkan dari
stack.
Stack memiliki beberapa macam operasi, yaitu :
A. ISEMPTY : untuk memeriksa apakah stack kosong.
B. ISFULL : untuk memeriksa apakah stack sudah penuh.
C. PUSH : untuk menambahkan item pada posisi paling atas (TOP).
D. POP : untuk menghapus item paling atas (TOP).
E. 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];
};
Deklarasi variable stack dari struct:
STACK tumpuk;

Inisialisasi pada stack:
Pada mulanya, isi top dengan -1, karena array dalam
C/C++ dimulai dari 0, berarti stack adalah KOSONG.
TOP adalah variable penanda dalam STACK yang
menunjukkan elemen teratas stack.
TOP OF STACK AKAN SELALU BERGERAK
HINGGA MENCAPAI max OF stack ,sehingga
menyebabkan stack penuh.
Void inisialisasi ()
{
Tumpuk.top=-1;
}

A. ISEMPTY
Fungsi yang menentukan apakah stack kosong atau tidak.
Tanda bahwa stack kosong adalag top bernilai kurang dari
nol atau -1.
Fungsi IsEmpty dalam C++:
Int IsEmpty()
{
If(tumpuk.top == -1
Return 1;
Else
Return 0;
}
B. ISFULL
Fungsi ini memeriksa apakah stack yang sudah ada sudah
penuh atau belum. Stack penuh jika puncak stack terdapat
tepat di bawah jumlah maksimum yang dapar ditampung
stack atau dengan kata lain TOP=MAX_STACK-1.
Int IsFull()
{
If(tumpuk.top==MAX_STACK-1)
Return 1;
Else
Return 0;
}

C. PUSH
Fungsi ini menambahkan item atau elemen kedalam stack dan
tidak bisa dilakukan lagi jika stack sudah penuh.
Fungsi push dalam C++
Void push (char d[6])
{
Tumpuk.top++
Strcpy(tumpuk.data[tumpuk.top],d;
}
D. POP
Fungsi ini mengambil elemen teratas dari stack dengan syarat
stack tidak boleh kosong.
Cara memasukkan data dengan fungsi Pop, yaitu:
Ambil dahulu nilai elemen teratas dengan mengakses
TOP of STACK.
Tampilkan nilai yang akan diambil.
Lakukan decrement nilai TOP OF STACK, sehingga
jumlah elemen stack berkurang 1.
Fungsi pop dalam C++:
Void pop()
{
Cout<<Data yang terambil
=<<tumpuk.data[tumpuk.top];
Tumpuk.top--;
}
E. CLEAR
Fungsi ini akan mengosongkan stack dengan cara mengeset
Top dengan -1. Jika top bernilai kurang dari nol, maka stack
dianggap kosong.
Fungsi Clear dalam C++:
Void clear()
{
Tumpuk.data=tumpuk.top=-1
Cout<<Data clear;
}

PROGRAM STACK
/*
* stack.cpp
*
* Created on: May 23, 2014
* Author: SAMSUNG
*/


#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;

}
}
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 : \n ";
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;
}

Output program




BAB II
PENJELASAN PROGRAM
1. Tanda yang diawali dengan /* dan diakhiri tanda */ adalah
script untuk sebuah komentar atau perintah / teks, namun
jika program di run tidak akan dibaca oleh compiler, tidak
muncul di output.
2. #include adalah pengarah preprocessor yang berfungsi
untuk menginstruksikan compiler.
3. <iostream> adalah header atau library file untuk proses
input output nantinya.
4. Using namespace std adalah penyingkatan sebuah kode
5. #define MAX_STACK 10 adalah library untuk stack
maximal 10
6.
struct STACK {
int top;
char data [10] [10];
}; STACK tumpuk
Struct berisi stack dengan isi tipe data integer dan character
7. void inisialisasi () prosedur inisialisasi
{
tumpuk.top=-1;
}

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

}

void push (char d[10]) prosedur push

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

8. void push (char d[10]) prosedur push

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

}

void Pop() prosedur pop
{
cout<<"Data yang terambil ="<<tumpuk.data[tumpuk.top]; menampilkan data
tumpuk.top--;

}

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

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

}
9. int main () merupakan badan program
{
int pil; tipe data int pil (pilihan)
inisialisasi (); pemanggilan prosedur inisialisasi
char dt[10];
do{
cout<<"1. Push \n"; menampilkan output tulisan push
cout<<"2. Pop \n"; menampilkan output tulisan pop
cout<<"3. Tampilkan Data \n"; menampilkan output tulisan tampilkan
cout<<"4. Clear \n"; menampilkan output tulisan clear
cout<<"5. Keluar \n"; menampilkan output tulisan keluar
cout<<"Pilihan : \n "; menampilkan output tulisan pilihan
cin>>pil; memanggil tipe data pil

10. switch(pil){ perulangan menggunakan switch

case 1: case 1 berisi perulangan statement if isfull
if(IsFull() !=1){
cout<<"Data =";
cin>>dt;
push(dt);

} else cout<<"\n Stack penuh !\n";
break;

case 2: case berisi perulangan statement if isempty
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); perulangan dimana pilihan tidak sama dengan 5 maka akan kembali ke
awal
return 0; execute of the program
}

1. tugas praktikum
Program stack push
Listing program stack push
/*
* pusshhh.cpp
*
* Created on: Jun 23, 2014
* Author: SAMSUNG
*/


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


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

void inisialisasi()
{
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;
}

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;
}
}


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


int main()
{
int pil,n;
inisialisasi();
char dt[10];
cout<<"Masukkan Jumlah Stack MAX: ";
cin>>n;
MAX_STACK(n);
do{

cout<<"1. Push \n";
cout<<"2. Tampilkan Data \n";
cout<<"3. 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)
TampilStack();
else
cout<<"\n Stack kosong! \n";
break;
}
}
while(pil != 3);
return 0;
}

OUTPUT PROGRAM STACK PUSH

Penjelasan listing program push
1. Tanda yang diawali dengan /* dan diakhiri tanda */
adalah script untuk sebuah komentar atau perintah / teks,
namun jika program di run tidak akan dibaca oleh
compiler, tidak muncul di output.
2. #include adalah pengarah preprocessor yang berfungsi
untuk menginstruksikan compiler.
3. <iostream> adalah header atau library file untuk proses
input output nantinya.
4. Using namespace std adalah penyingkatan sebuah kode
5. struct STACK { STRUCT STACK
int top;
char data[10][10];
int MAX_STACK;
};STACK tumpuk;
6. void inisialisasi () prosedur inisialisasi
{
tumpuk.top=-1;
}

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

}
void push (char d[10]) prosedur push

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

7. void push (char d[10]) prosedur push

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

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

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

}
1. int main () merupakan badan program
{
int pil; tipe data int pil (pilihan)
inisialisasi (); pemanggilan prosedur inisialisasi
char dt[10];
do{
cout<<"1. Push \n"; menampilkan output tulisan push
cout<<"3. Tampilkan Data \n"; menampilkan output tulisan tampilkan
cout<<"4. Clear \n"; menampilkan output tulisan clear
cout<<"5. Keluar \n"; menampilkan output tulisan keluar
cout<<"Pilihan : \n "; menampilkan output tulisan pilihan
cin>>pil; memanggil tipe data pil

2. switch(pil){ perulangan menggunakan switch

case 1: case 1 berisi perulangan statement if isfull
if(IsFull() !=1){
cout<<"Data =";
cin>>dt;
push(dt);

} else cout<<"\n Stack penuh !\n";
break;


case 2:
if (IsEmpty()!=1)
TampilStack();
else
cout<<"\n stack kosong! \n ";
break;
case 3:
Clear();
cout<<"\n Stack Sudah kosong! \n ";
break;

}
}
while(pil!=5); perulangan dimana pilihan tidak sama dengan 5 maka akan kembali ke
awal
return 0; execute of the program
}


2. tugas praktikum
Program stack pop
Listing program stack pop

/*
* pooppp.cpp
*
* Created on: May 24, 2014
* Author: SAMSUNG
*/


#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 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. Pop \n";
cout<<"2. Tampilkan Data \n";
cout<<"3. Clear \n";
cout<<"4. Keluar \n";
cout<<"Pilihan : \n ";
cin>>pil;

switch(pil){

case 1:

case 1:
if(IsEmpty () !=1)
Pop();
else
cout<<"\n Stack kosong! \n";
break;

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





Output program pop

Penjelasan listing program stack pop
1. Tanda yang diawali dengan /* dan diakhiri tanda */ adalah
script untuk sebuah komentar atau perintah / teks, namun
jika program di run tidak akan dibaca oleh compiler, tidak
muncul di output.
2. #include adalah pengarah preprocessor yang berfungsi
untuk menginstruksikan compiler.
3. <iostream> adalah header atau library file untuk proses
input output nantinya.
4. Using namespace std adalah penyingkatan sebuah kode
5. #define MAX_STACK 10 adalah library untuk stack
maximal 10
6.
struct STACK {
int top;
char data [10] [10];
}; STACK tumpuk
Struct berisi stack dengan isi tipe data integer dan character
7. void inisialisasi () prosedur inisialisasi
{
tumpuk.top=-1;
}

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

}


void Pop() prosedur pop
{
cout<<"Data yang terambil ="<<tumpuk.data[tumpuk.top]; menampilkan data
tumpuk.top--;

}

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

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

}
8. int main () merupakan badan program
{
int pil; tipe data int pil (pilihan)
inisialisasi (); pemanggilan prosedur inisialisasi
char dt[10];
do{
cout<<"1. Pop \n"; menampilkan tulisan pop
cout<<"2. Tampilkan Data \n"; menampilkan tulisan tampil data
cout<<"3. Clear \n"; menampilkan tulisan clear
cout<<"4. Keluar \n"; menampilkan tulisan keluar
cout<<"Pilihan : \n "; menampilkan tulisan pilihan
cin>>pil; menampilkan tulisan

9. switch(pil){ perulangan menggunakan switch

case 1 :if(IsEmpty () !=1)
Pop();
else
cout<<"\n Stack kosong! \n";
break;

case 2 :
if(IsEmpty() != 1)
TampilStack();
else
cout<<"\n Stack kosong! \n";
break;
}
}
while(pil!=5); perulangan dimana pilihan tidak sama dengan 5 maka akan kembali ke
awal
return 0; execute of the program
}



BAB 3
KESIMPULAN
1. Stack memiliki beberapa macam operasi, yaitu :
F. ISEMPTY : untuk memeriksa apakah stack kosong.
G. ISFULL : untuk memeriksa apakah stack sudah penuh.
H. PUSH : untuk menambahkan item pada posisi paling atas (TOP).
I. POP : untuk menghapus item paling atas (TOP).
J. CLEAR : untuk mengosongkan stack.
2. ISEMPTY
Fungsi yang menentukan apakah stack kosong atau tidak.
Tanda bahwa stack kosong adalag top bernilai kurang dari
nol atau -1.
3. ISFULL
Fungsi ini memeriksa apakah stack yang sudah ada sudah
penuh atau belum. Stack penuh jika puncak stack terdapat
tepat di bawah jumlah maksimum yang dapar ditampung
stack atau dengan kata lain TOP=MAX_STACK-1.

4. PUSH
Fungsi ini menambahkan item atau elemen kedalam stack dan
tidak bisa dilakukan lagi jika stack sudah penuh.
5. POP
Fungsi ini mengambil elemen teratas dari stack dengan syarat
stack tidak boleh kosong.
6. CLEAR
Fungsi ini akan mengosongkan stack dengan cara mengeset
Top dengan -1. Jika top bernilai kurang dari nol, maka stack
dianggap kosong.

Anda mungkin juga menyukai