Anda di halaman 1dari 20

STRUKTUR DATA

POKOK BAHASAN - 7
STACK ( TUMPUKAN )

Oleh :
NAZARUDDIN AHMAD, S.T, M.T

Referensi : Antonius Rachmat C, S.Kom


Design By mytemplate 2013

Stack
Stack atau tumpukan adalah suatu struktur yang
penting dalam pemrograman.
Bersifat LIFO ( Last In First Out ).
Benda yang terakhir masuk ke dalam stack akan
menjadi benda pertama yang dikeluarkan dari stack.
Ujung list disebut top.

Stack
Di mana stack ditemukan ?
Kehidupan sehari-hari: tumpukan piring kotor :
- Piring kotor terakhir diletakkan diposisi paling
atas tumpukan.
- Piring paling atas yang pertama kali dicuci.

Stack
Contoh : - Pertama, kita akan meletakkan TV
- Setelah TV kita akan meletakkan VCD
- Maka akan tersusun VCD kemudian TV
- Kemudian diatas VCD akan kita letakkan Compo
- Maka akan tersusun tumpukan TV, VCD dan Compo
Compo
Compo

VCD

TV

TV

VCD

VCD

TV

TV

Operasi-operasi/fungsi Stack
Operasi fungsi Stack

Push

Digunakan untuk menambah elemen pada stack pada tumpukan paling


atas

Pop

Digunakan untuk mengambil elemen pada tumpukan paling atas

Clear

Digunakan untuk mengosongkan stack

IsEmpty

Fungsi yang digunakan untuk mengecek apakah stack sudah kosong

IsFull

Fungsi yang digunakan untuk mengecek apakah stack sudah penuh


Push

Pop

Stack Exception
Eksekusi suatu operasi stack mungkin mengakibatkan
suatu kondisi error condition yang disebut exception.
Dalam Stack ADT, operasi pop dan top tidak dapat
dilakukan jika stack nya kosong.

Upaya mengeksekusi pop dan top pada stack yang


kosong akan mengakibatkan adanya
EmptyStackException.

Stack with Array Struct


Definisikan MAX_STACK untuk maksimum isi stack
Definisikan stack menggunakan struct
Buatlah variabel array data sebagai implementasi stack secara
nyata.
Deklarasikan operasi-operasi / function di atas dan buat
implementasinya.

Keterbatasan
Ukuran maksimum stack harus didefenisi diawal dan
tidak bisa diubah.
- Jika ukuran terlalu esar, pemborosan ruang memory.
- Jika ukuran terlalu kecil, dapat mengakibatan
terjadinya stack overflow.
Upaya melakukan operasi push sebuah elemen ke stack
yang penuh dapat mengakibatkan terjadinya exception.

Implementasi
Deklarasi MAX_STACK

Hati-hati, mulai dari 0 menjadi 0-9

#define MAX 10

Deklarasi STACK dengan struct dan


arry data
typedef struct STACK{
int top
int Data[MAX]
};

Misalkan : data adalah


array of integer berjumlah
10 data

Implementasi (lanjt)
Deklarasi / buat variabel dari struct
Stack CreateStack
{
Stack S;
S.Top = -1
return S;
}

Fungsi untuk menciptakan


Stack.
Dengan Top di set menunjuk
ke index NULL (-1)

10

Inisialisasi Stack
Pada mulanya isi top dengan -1, karena array dalam C dimulai
dari 0, yang berarti stack adalah KOSONG.
Top adalah suatu variabel penanda dalam STACK yang
menunjukkan elemen teratas STACK sekarang. Top of Stack akan
selalu bergerak hingga mencapai MAX of STACK sehingga
menyebabkan stack PENUH.

Stack CreateStack
{
Stack S;
S.Top = -1
return S;
}

11

Fungsi IsFull
Untuk memeriksa apakah stack sudah penuh ?
Dengan cara memeriksa Top of Stack, jika sudah sama dengan
MAX_STACK-1 maka full, jika belum (masih lebih kecil dari
MAX_STACK-1) maka belum full.

Int IsFull(Stack S)
{
if (S.TOP == (MAX -1))
return 1;
else
return 0;
}

12

Fungsi IsEmpty
Untuk memeriksa apakah stack masih kosong ?
Dengan cara memeriksa Top of STACK, jika masih -1 maka
berarti stack masih kosong

Int IsEmpty(Stack S)
{
if (S.TOP == -1)
return 1;
else
return 0;
}

13

Fungsi Push
Untuk memasukkan elemen ke stack, selalu menjadi elemen
teratas stack.
Tambah satu (increment) nilai Top of STACK terlebih dahulu setiap
kali ada penambahan elemen stack, asalkan stack masih belum
penuh, kemudian isikan nilai baru ke stack berdasarkan indeks
Top of Stack setelah ditambah satu (diincrement).

14

Fungsi Push (Lanjt)

15

Fungsi Push (Lanjt)


Void Push(Stack* S, int X)
{
if (IsFULL(*S))
printf( Stack Penuh );
else
(*S).Top++;
(*S).Data[(*S).TOP] = X;
}

16

Fungsi Pop
Untuk mengambil elemen teratas dari stack.
Ambil dahulu nilai elemen teratas stack dengan mengakses top of
stack, tampilkan nilai yang akan diambil terlebih dahulu, baru
diincrement nilai Top of Stack sehingga jumlah elemen stack
berkurang.

17

Fungsi Pop (Lanjt..)

18

Fungsi Pop (Lanjt..)


Void Pop(Stack* S)
{
int X;
if (IsEmpty(*S))
{
printf( \nStack Tidak Bisa Di POP ! )
X = -99999l
}
else
{
X = (*S).Data[(*S).TOP];
(*S).TOP--;
}
return X;
}
19

Program Utama :
int main()
{
Stack S1;
S1 = CreateStack();
if (IsEmpty(S1))
printf( Stack Kosong );
else
printf( Stack Isi ! );
Push(&S1,2);

getch();
return 0;
}
20

Anda mungkin juga menyukai