Anda di halaman 1dari 14

LAPORAN PRAKTIKUM RESMI

ALGORITMA & STRUKTUR DATA 1



STACK







Disusun oleh :
Unggul Budi Suryanto
201301011

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

JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO
PURWOKERTO
2014

BAB I
DASAR TEORI

Stack atau tumpukan merupakan bentuk khusus dari Linier List yang pemasukan dan
penghapusan elemennya hanya dapat dilakukan pada satu posisi, yaitu posisi akhir dari List
(Top)
Prinsip Stack adalah LAST-IN-FIRST-OUT (LIFO).
Operasi operasi pada stack ada beberapa macam, berikut adalah operasi operasi yang
digunakan dalam stack :
ISEMPTY: Untuk memeriksa apakah stack kosong
ISFULL : Untuk memeriksa apakah stack sudah penuh
PUSH : Untuk menambahkan item pada posisi paling atas (TOP)
POP : Untuk menghapus item paling atas (TOP)
CLEAR : Untuk mengosongkan stack

Stack pada array
Deklarasi MAX_STACK
#define MAX_STACK 6
Deklarasi STACK dengan struct dan array data
typedef struct STACK{
int top;
int data[6];
};
Deklarasi variabel 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 variabel penanda dalam STACK yang menunjukkan elemen teratas
Stack.
TOP of STACK akan selalu bergerak hingga mencapai MAX of STACK sehingga
menyebabkan stack PENUH



Fungsi IsEmpty
Digunakan untuk memeriksa apakah stack masih dalam kondisi kosong. Dengan cara
memeriksa TOP of STACK. Jika TOP masih = -1 maka berarti stack masih kosong



Fungsi IsFull
Digunakan untuk memeriksa apakah kondisi stack sudah penuh
Dengan cara memeriksa TOP of Stack. Jika TOP of STACK = MAX_STACK-1 maka FULL
(Penuh). Jika TOP of STACK < MAX_STACK-1 maka belum penuh



Fungsi Push
Digunakan untuk memasukkan elemen ke dalam stack dan selalu menjadi elemen teratas
stack
Dengan cara :
1. Menambah satu (increment) nilai TOP of STACK setiap ada penambahan elemen
stack selama stack masih belum penuh
2. Isikan nilai baru ke stack berdasarkan indeks TOP of STACK setelah ditambah satu
(diincrement)



Fungsi Pop
Digunakan untuk menghapus elemen yang berada pada posisi paling atas dari stack.
Dengan cara :
1. Ambil dahulu nilai elemen teratas stack dengan mengakses TOP of STACK.
2. Tampilkan nilai yang akan diambil.
3. Lakukan decrement nilai TOP of STACK sehingga jumlah elemen stack berkurang
1




Fungsi Clear
Digunakan untuk mengosongkan stack / membuat stack hampa sehingga Top pada Stack
berada kembali di posisi Top = -1




BAB II
PENJELASAN PROGRAM

/*
* full.cpp
*
* Created on: 25 Mei 2014
* Author: acer
*/

#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<<"\n1. 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<<"Stack kosong! \n";
break;
case 3:
if(IsEmpty()!=1)
TampilStack();
else
cout<<"\n Stack kosong! \n";
break;
case 4:
Clear ();
cout<<"\nStack kosong! \n";
break;
}
}
while(pil !=5);
return 0;
}




Output program :


Penjelasan program :
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 memanggil fungsi/perintah cin cout didalam program
C++.
4. Using name space std; adalah standar deviasi bahasa pemrograman C++.
5. .
struct STACK
{
int top;
char data[10][10];
}; STACK tumpuk;
Maksudnya adalah pendeklarasian tipedata abstrack struct bernama tumpuk.
6. Int main() adalah fungsi unruk memulai suatu program.
7. Tanda kurung kurawal {} berfungsi untuk mengawali dan mengakhiri program main
8. Void adalah sub menu yang akan dipanggil dalam menu utama.
9. Do-while adalah suatu fungsi perulangan.
10. Cout<<\n1.push, \n2.pop, dst adalah daftar menu yang ada dalam program.
11. Cout<<pilihan : adalah var yang ditampilkan dalam program untuk pemilihan daftar
menu.
12. Cin>>pil; adalah pemanggilan var yang diinputkan oleh user.
13. Switch adalah fungsi pemilihan menu sesuai dengan yang di inputkan user.
14. Case 1, case 2, case 3 dst adalah daftar fungsi pengandaian yang digunakan dalam
program. Digunakan saat terjadi pemilihan menu, apabila dalam case 1 terpenuhi
maka program berhenti namun apabila tidak maka case akan berlanjut ke case
berikutnya.
15. Return 0; digunakan untuk membaca karakter.

Program praktikum pop
/*
* pop.cpp
*
* Created on: 25 mei 2014
* Author: unggulbudisuryanto
*/

#include <iostream>
#include <cstring>
#define max_stack 10
using namespace std;

struct stack
{
int top;
char data[10] [10];

};stack bobo;

void inisialisasi(int z)
{
bobo.top=z-1;
}
int isfull()
{
if(bobo.top==max_stack-1)
return 1;
else
return 0;
}
int isempty()
{
if(bobo.top==-1)
return 1;
else
return 0;
}

void pop()
{
cout<<"Data yang terambil = "<<bobo.data[bobo.top]<<endl;
bobo.top--;
}
void tampilstack()
{
for(int i=bobo.top;i>=0;i--)
{
cout<<"Tampil data :"<<bobo.data[i]<<endl;
}
}
int main()
{
int pil, z;

cout<<"masukkan data :";
cin>>z;
do{
cout<<"1.Pop \n";
cout<<"2.Tampilkan data \n";
cout<<"Pilihan : ";
cin>>pil;
switch(pil)
{
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 :
cout<<"\n Stack ERROR \n";
break;
}
}
while(pil !=5);
return 0;
}


Output program :


Penjelasan program :
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 memanggil fungsi/perintah cin cout didalam program
C++.
4. Using name space std; adalah standar deviasi bahasa pemrograman C++.
5. struct stack
{
int top;
char data[10] [10];

};stack bobo;
Adalah pendeklarasian typedata abstrak bernama bobo yang digunakan dalam
program tersebut.
6. Int main() adalah fungsi unruk memulai suatu program.
7. Tanda kurung kurawal {} berfungsi untuk mengawali dan mengakhiri program main
8. Void adalah sub menu yang akan dipanggil dalam menu utama.
9. Do-while adalah suatu fungsi perulangan.
10. Cout<<\n1, \n2, dst adalah daftar menu yang ada dalam program.
11. Cout<<pilihan : adalah var yang ditampilkan dalam program untuk pemilihan daftar
menu.
12. Cin>>pil; adalah pemanggilan var yang diinputkan oleh user.
13. Switch adalah fungsi pemilihan menu sesuai dengan yang di inputkan user.
14. Case 1, case 2, case 3 dst adalah daftar fungsi pengandaian yang digunakan dalam
program. Digunakan saat terjadi pemilihan menu, apabila dalam case 1 terpenuhi
maka program berhenti namun apabila tidak maka case akan berlanjut ke case
berikutnya.
15. Return 0; digunakan untuk membaca karakter.


Program praktikum push
/*
* push.cpp
*
* Created on: 25 Mei 2014
* Author: acer
*/


#include <iostream>
#include <cstring>
#define MAX_STACK 10
using namespace std;

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

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

int isFull()
{
if(bobo.top == max_stack-1) return 1;
else
return 0;
}

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

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

void tampilStack()
{
for(int i=bobo.top; i>=0;i--){
cout<<"tampil data : "<<bobo.data[i]<<endl;

}
}

void clear()
{
bobo.top=-1;
}

void max_stack(int z)
{
bobo.max_stack=z;
}

int main()
{
int pil, z;
inisialisasi();
char dt[10];

cout<<"masukkan jumlah data :";
cin>>z;
do{
cout<<"1. push \n";
cout<<"2. Tampilkan data \n";
cout<<"3. Keluar \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)
tampilStack();
else
cout<<"\n stack kosong ! \n";
break;
}

} while(pil !=5);
return 0;
}
Output programnya adalah :


Penjelasan program :
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 memanggil fungsi/perintah cin cout didalam program
C++.
4. Using name space std; adalah standar deviasi bahasa pemrograman C++.
5. struct STACK
{
int top;
char data[10] [10];
int max_stack;
};STACK bobo;
Adalah pendeklarasian typedata abstrak bernama bobo yang digunakan dalam
program tersebut.
6. Int main() adalah fungsi unruk memulai suatu program.
7. Tanda kurung kurawal {} berfungsi untuk mengawali dan mengakhiri program main
8. Void adalah sub menu yang akan dipanggil dalam menu utama.
9. Do-while adalah suatu fungsi perulangan.
10. Cout<<\n1, \n2, dst adalah daftar menu yang ada dalam program.
11. Cout<<pilihan : adalah var yang ditampilkan dalam program untuk pemilihan daftar
menu.
12. Cin>>pil; adalah pemanggilan var yang diinputkan oleh user.
13. Switch adalah fungsi pemilihan menu sesuai dengan yang di inputkan user.
14. Case 1, case 2, case 3 dst adalah daftar fungsi pengandaian yang digunakan dalam
program. Digunakan saat terjadi pemilihan menu, apabila dalam case 1 terpenuhi
maka program berhenti namun apabila tidak maka case akan berlanjut ke case
berikutnya.
15. Return 0; digunakan untuk membaca karakter.

BAB IV
KESIMPULAN

Stack atau tumpukan merupakan bentuk khusus dari Linier List yang pemasukan dan
penghapusan elemennya hanya dapat dilakukan pada satu posisi, yaitu posisi akhir dari List
(Top)
Prinsip Stack adalah LAST-IN-FIRST-OUT (LIFO).
Operasi operasi pada stack ada beberapa macam, berikut adalah operasi operasi yang
digunakan dalam stack :
ISEMPTY: Untuk memeriksa apakah stack kosong
ISFULL : Untuk memeriksa apakah stack sudah penuh
PUSH : Untuk menambahkan item pada posisi paling atas (TOP)
POP : Untuk menghapus item paling atas (TOP)
CLEAR : Untuk mengosongkan stack

Stack pada array
Deklarasi MAX_STACK
#define MAX_STACK 6
Deklarasi STACK dengan struct dan array data
typedef struct STACK{
int top;
int data[6];
};
Deklarasi variabel stack dari struct
STACK tumpuk;
Fungsi IsEmpty Digunakan untuk memeriksa apakah stack masih dalam kondisi kosong.
Fungsi ISFULL Fungsi ini memeriksa apakah stack yang sudah ada sudah penuh atau
belum.
Fungsi Push Digunakan untuk memasukkan elemen ke dalam stack dan selalu menjadi
elemen teratas stack
Fungsi Pop Digunakan untuk menghapus elemen yang berada pada posisi paling atas dari
stack.
Fungsi Clear Digunakan untuk mengosongkan stack / membuat stack hampa sehingga Top
pada Stack berada kembali di posisi Top = -1


DAFTAR PUSTAKA
1. Ardhana, YM Kusuma. 2013. Struktur Data dalam Ilustrasi Eclups Indigo C ++.
Yogyakarta.

Anda mungkin juga menyukai