laporan praktikum algoritma dan struktur (4)

LAPORAN PRAKTIKUM
ALGORITMA DAN STRUKTUR DATA I
TUMPUKAN (STACK)
Modul VIII

Disusun Oleh :
Syukur Jaya Mendrofa
201501072

Dosen Pengampu :
Oskar Ika Adi Nugroho S.T., MT

JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI ILMU KOMPUTER (STIKOM)
“YOS SUDARSO”
PURWOKERTO
2016
BAB I
TEORI DASAR

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 STACK
1. ISEMPTY

: Untuk memeriksa apakah stack 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.

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 mulanya isi top dengan -1, karena array dalam C/C++ dimulai dari 0, berarti
stack adalah KOSONG
void inisialisasi ()
{
tumpuk.top = -1
}
 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
1. Fungsi IsEmpty


Digunakan untuk memeriksa apakah stack masih dalam kondisi kosong
int IsEmpty ()
{
if (tumpuk.top == -1
return 1;
else
return 0;

}



Dengan cara memeriksa TOP of STACK. Jika TOP masih = -1 maka berarti stack
masih kosong

2. Fungsi IsFull


Digunakan untuk memeriksa apakah kondisi stack sudah penuh



Dengan cara memeriksa TOP of Stack.
o Jika TOP of STACK = MAX_STACK-1 maka FULL (Penuh).
o Jika TOP of STACK < MAX_STACK-1 maka belum penuh

Fungsi IsFull
int IsFull ()

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

3. Fungsi PUSH
Digunakan untuk memasukkan elemen ke dalam stack dan selalu menjadi elemen teratas
stack
Dengan cara :
 Menambah satu (increment) nilai TOP of

STACK setiap ada penambahan elemen

stack selama stack masih belum penuh.
 Isikan nilai baru ke stack berdasarkan indeks TOP of STACK setelah ditambah satu
(diincrement).
void push (char d[6])
{

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

4. Fungsi POP

Digunakan untuk menghapus elemen yang berada pada posisi paling atas dari stack.
Dengan cara :
o Ambil dahulu nilai elemen teratas stack dengan mengakses TOP of STACK.
o Tampilkan nilai yang akan diambil.
o Lakukan decrement nilai TOP of STACK

sehingga jumlah elemen stack

berkurang 1
void pop ()
{
printf(“Data yg di POP = %s\n”, tumpuk.data[tumpuk.top]);
tumpuk.top--;
}


5. Fungsi CLEAR
Digunakan untuk mengosongkan stack / membuat stack hampa sehingga Top pada Stack
berada kembali di posisi Top = -1
void clear ()
{
tumpuk.data=tumpuk.top=-1
printf(“Data clear”);
}

BAB II

ANALISA PROGRAM

Source. cpp

Source. cpp

tipeTumpukan.h


tipeTumpukan.h

tipeTumpukan.h

tipeTumpukan.h

tipeTumpukan.h

tipeTumpukan.h

tumpukanADT.h

Output Program

Penjelasan singkat Listing Program

Program diatas mempunyai 3 file header, yaitu:
1. Program utama dengan nama file header Source. cpp. Program utama (include)
memanggil


file

header

tipeTumpukan.h,

kemudian

di

dalam

file

header

tipeTumpukan.h (include) memanggil isi file header tumpukanADT.h
2. tipeTumpukan.h berisi defenisi class tipeTumpukan dan berisi defenisi template kelas
tipeTumpukan, template kelas seperti berikut ini :
DEFENISI TEMPLATE KELAS TIPETUMPUKAN

Menginisialisasi Tumpukan
Menetapkan atas tumpukan menjadi 0 untuk menginisialisasi tumpukan.
Defenisi atas fungsi InisialisasiTumpukan adalah sebagai berikut:

Tumpukan Kosong
Kita telah melihat bahwa nilai dari atasTumpukan mengindikasikan apakah tumpukan
kosong atau tidak. Jika atasTumpukan adalah 0, maka tumpukan kosong. Selain itu,
tumpukan tidak kosong. Defenisi apaTumpukanKosong adalah sebagai berikut:

Tumpukan Penuh
Selanjutnya,

operasi

apaTumpukanPenuh

jika

atasTumpukan


sama

dengan

ukuranTumpukanMaks. Defenisi atas fungsi apaTumpukanPenuh adalah sebagai berikut:

Push
Menambahkan atau menempatkan sebuah elemen keatas tumpukan adalah sebuah proses dua
langkah. Ingat nilai dari atasTumpukan mengindikasikan jumlah elemen pada tumpukan,
dan atasTumpukan-1 mengindikasikan posisi dari elemen teratas tumpukan. Oleh karena itu
operasi Push adalah sebagai berikut:
1. Menyimpan

itemBaru

didalam

komponen

array

yang

diindikasikan

oleh

atasTumpukan.
2. Menginkremen atasTumpukan.
Defenisi atas fungsi Push adalah sebagai berikut:

Jika mencoba menambahkan item baru ke sebuah tumpukan penuh, maka akan overflow.
Pemeriksaan kerusakan overflow dapat ditangani dalam beberapa cara, salah satunya
ditunjukkan pada segmen kode tersebut yaitu sebelum pemanggilan fungsi Push
(diasumsikan bahwa tumpukan adalah sebuah objek bertipe tipeTumpukan).
if (!tumpukan.apaTumpukanPenuh( ) )
tumpukan.push(itemBaru);
Menghasilkan Elemen Teratas Tumpukan (operasi Top)
Defenisi atas fungsi Top adalah sebagai berikut:

Pop
Untuk menghapus atau membuang sebuah elemen dari tumpukan, yaitu cukup dengan
mengdekremen atasTumpukan.
Defenisi atas fungsi Pop adalah sebagai berikut:

Fungsi SalinTumpukan
Fungsi SalinTumpukan membuat Salinan dari sebuah tumpukan. Tumpukan yang akan
disalin dilewatkan sebagai parameter kepada fungsi SalinTumpukan. Fungsi ini untuk
mengimplementasikan konstruktor penyalin dan peng-over-load-an operator penugaasan.
Defenisi atas fungsi SalinTumpukan adalah sebagai berikut:

Konstruktor dan Destruktor
Fungsi-fungsi untuk mengimplementasikan Konstruktor dan Destruktor, Konstruktor dengan
parameter dengan menetapakan ukuran tumpukan menjadi ukuran yang ditentukan oleh
pengguna, menetapkan atasTumpukan menjadi 0, dan menciptakan sebuah array untuk
menampung elemen-elemen tumpukan. Jika tidak menentukan ukuran array, konstruktor akan
mengunakan ukuran default 100 untuk menciptakan array berukuran 100. Destructor
berfungsi hanya mendealokasi memori yang ditempati oleh array dan menetapkan
atasTumpukan menjadi 0. Defenisi atas Konstruktor dan Destruktor adalah sebagai berikut:
Konstruktor

Destruktor

Konstruktor Penyalin
Konstruktor Penyalin dipanggil ketika sebuah objek tumpukan dilewatkan sebagai parameter
nilai kepada sebuah fungsi. Ia menyalin nilai dari parameter aktual ke parameter formal
terkait. Defenisi atas Konstruktor Penyalin adalah sebagai berikut:

Meng-overload Operator Penugasan (=)
Untuk kelas dengan variabel anggota pointer, operator penugasan harus dioverload secara
eksplisit. Defenisi atas fungsi untuk meng-overload operator penugasan untuk kelas
tipeTumpukan adalah sebagai berikut:

3. File header tumpukanADT.h berisi defenisi class tumpukanADT
 inisialisasitumpukan ( ) : void


apa tumpukankosong ( ) :boolean



apa tumpukanpenuh ( ) : Boolean



push(tipe) : void



top ( ) : tipe



pop ( ) : void

BAB III
KESIMPULAN

Dari hasil pembuatan laporan diatas dapat disimpulkan bahwa Stack bisa diartikan sebagai
suatu kumpulan data yang seolah-olah diletakan diatas data yang lain. Satu hal yang perlu
diingat bahwa kita bisa menambah (menyisipkan) data dan mengambil (menghapus) data
melalui ujung yang sama, yang disebut sebagai ujung atas stack ( top of stack ). Stack
mempunyai sifat LIFO ( LAST IN FIRST OUT ) yang terakhir masuk adalah yang pertama
keluar.