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.
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.