MODUL 3
STACK
3.1
Tujuan Praktikum
1. Mengetahui
dan memahami tentang Stack
2. Dapat
Mengimplementasikan Fungsi Stack
3.2 Dasar Teori
Stack
adalah suatu daftar atau urutan elemen yang elemennya dapat diambil dan
ditambah hanya hanya melalui satu jalur saja, yaitu bagian depan list. Contoh
dalam kehidupan sehari-hari adalah tumpukan buku di perpustakaan yang
tumpukannya dapat ditambah pada bagian paling atas dan mengambilnya dari bagian
paling atas pula.
Ada
2 operasi paling dasar yang penting dari stack yang dapat dilakukan, yaitu :
a. Operasi push yaitu operasi menambahkan
elemen data pada urutan terakhir (paling atas).
b. Operasi pop yaitu operasi mengambil sebuah
elemen data pada urutan terakhir dari stack.
Tumpukan disebut juga “Push Down Back” yaitu
penambahan elemen baru (push) dan penghapusan elemen dari tumpukan (pop) Untuk
mengimplementasikan stack, bisa menggunakan linked list atau juga array,
tergantung pada permasalahan yang dihadapi. Apabila permasalahan yang dihadapi
adalah permasalahan tumpukan (stack) dimana jumlah elemen maksimum dibatasi,
maka bisa digunakan array. Apabila jumlah elemen maksimumnya tidak dibatasi,
maka linked list lebih tepat digunakan. Salah satu konsep yang efektif untuk
menyimpan dan mengambil data adalah “terakhir masuk sebagai yang pertama
keluar” (Last in First Out/LIFO).
Dengan konsep ini, pengambilan data akan
berkebalikan urutannya dengan penyimpanan data.
Bentuk
penyajian stack bisa menggunakan tipe data array, tetapi sebenarnya penyajian
stack menggunakan array adalah kurang tepat karena banyaknya elmen dalam array
adalah statis, sedangkan dalam stack banyaknya elemen sangat bervariasi atau
dinamis. Meskipun demikian, array bisa digunakan untuk penyajian stack, tetapi
dengan anggapan bahwa banyaknya elemen maksimal dari suatu stack tidak melebihi
batas maksimum banyaknya elemen array. Pada suatu saat, ukuran stack akan sama
dengan ukuran array. Bila diteruskan menambah data, maka akan terjadi overflow.
Oleh karena itu, perlu ditambahkan data untuk mencatat posisi ujung stack. Ada
dua macam penyajian stack menggunakan array, yaitu Single stack dan Double
stack.
Deklarasi Umum
Bentuk
deklarasi single stack:
#define
MAX 50
#define
true 1
#define
false 0
Char
stack[MAX];
Int
top;
Operasi-Operasi
Single Stack
1.Fungsi
Init
2.Fungsi
Full
3.Fungsi
empty
4.Fungsi
clear
5.Fungsi
Push
6.Fungsi
Pop
Struktur data ini banyak dipakai
dalam informatika, misalnya untuk merepresentasikan :
- Pemanggilan Prosedur
- Perhitungan ekspresi aritmatika.
Definis
S adalah Stack dengan elemen ElmtS, maka definisi fungsional stack adalah:
CreateEmpty
: S {Membuat sebuah stack kosong}
IsEmpty
: S Boolean {Test Stack
kosong, true jika kosong}
IsFull : S Boolean {Test Stack
penuh, true jika stack penuh}
Push : ElmtS x SS {Menambahkan
sebuah elemen ElmtS sebagai TOP, TOP berubah nilainya.}
Pop : SS x ElmtS {Mengambil nilai elemen TOP,
sehingga TOP yang baru adalah elemen yang datang sebelum elemen TOP, mungkin
stack menjadi kosong}
3.3 Pembahasan
Implementasi Stack dengan beberapa
modul.
Membuat
File stack.h
|
#ifndef stack_H
#define
stack_H
#include
"boolean.h"
#define
Nil 0
typedef
int infotype;
typedef
int address;
typedef
struct {
infotype *T;
address TOP;
int Size;
} Stack;
#define
Top(S) (S).TOP
#define
InfoTop(S) (S).T[(S).TOP]
#define
Size(S) (S).Size
boolean
IsEmpty (Stack S);
boolean
IsFull (Stack S);
void
CreateEmpty(Stack *S);
void
Push(Stack *S, infotype X);
void
Pop(Stack *S, infotype* X);
#endif
|
Membuat
File stack.c
|
#include
"boolean.h"
#include
"stack.h"
#include
"stdlib.h"
boolean IsEmpty
(Stack S) {
return (Top(S) == Nil);
}
boolean
IsFull(Stack S) {
return (Top(S) == Size(S)+1);
}
void
createempty(Stack * S , int Size) {
(*S).T = (int *) malloc((Size+1) *
sizeof(int));
Top(*S) = Nil;
Size(*S) = Size;
}
void
Destruct(Stack *S) {
free ((*S).T);
}
void
Push(Stack *S, infotype X) {
Top(*S)++;
InfoTop(*S) = X;
}
|
Driver
yang memanfaatkan stack.h dan stack.c adalah mstack.c
|
#include "stack.h"
#include "stdio.h"
#include "stdlib.h"
int main() {
Stack S;
infotype X;
printf (" stack");
createempty(&S,100);
printf("size stack : %d \n",Size(S));
Push(&S,3);
printf("Nilai top dan infonya : %d dan
%d\n",Top(S), InfoTop(S));
Push(&S,8);
printf("Nilai top dan infonya : %d dan
%d\n",Top(S), InfoTop(S));
Destruct(&S);
return 0;
}
|
Membuat
boolean.h
|
#ifndef boolean_H
#define boolean_H
#define true 1
#define false 0
#define boolean unsigned char
#endif
|
Apabila
terjadi dengan kata kunci “WinMain” pada saat compile, kita bisa menggunakan
compile manual untuk membuat file stack.o dan stack.h nya.
Berikut
langkah – langkahnya :
1. Buka
Command Prompt
2. Pada
CMD, masuk kedalam direktori file file diatas, contoh karena saya menyimpan di
drive E dan difolder tugas kuliah maka saya pindah dahulu ke direktori E:\Tugas
Kuliah\Praktikum Alstruk\Pertemuan Ke 4
3. Lalu
buka Windows Explorer dan masuk kedalam folder instalan dev c++ kalian, masuk
ke dalam folder MinGW64 -> Bin -> lalu drag file gcc.exe kedalam CMD,
akan jadi seperti ini:
4. Setelah
itu ketikan perintah “-c stack.c” untuk membuat file stack.o. Lalu tekan enter
5. Selanjutnya
ketikan perintah “-o stack stack.c stack.o” untuk membuat exe. Lalu tekan
enter.
6. Coba
compile kembali pada dev c++ maka, seharusnya akan lancar dan tampil tampilan
dibawah ini.

DAFTAR
PUSTAKA
·
Hendra. “Stack Dalam Bahasa C”. 5 Juni
2016. https://endathedoctor.wordpress.com/2012/12/31/stack-dalam-bahasa-c/
·
Rudi. “Stack: Tumpukan Dalam Bahasa C”. 5
Juni 2016.
Sulastri, Heni.2016.
Modul Praktikum Algoritma & Struktur Data. Tasikmalaya:Teknik Informatika
Universitas Siliwan
Komentar
Posting Komentar