Anda di halaman 1dari 28

Anita Nathania P., S.Kom, M.

MT
anitaforpetra@gmail.com
UK. Petra 2
Pendahuluan
Masalah 1:

Data disimpan dalam komputer menggunakan
sistem binary. Dalam faktanya, bilangan integer
positive menggunakan penyimpanan biasa
menggunakan basis 2. Artinya basis sepuluh
(integer) dalam program harus di ubah menjadi
bilangan basis dua
Satu algoritma untuk mengubah basis
dilakukan berulang dengan cara dibagi 2,
sehingga akan menghasilkan basis 2 dan dibaca
dari kanan ke kiri

Sebagai contoh :
Basis 2 dua 26 adalah 11010

UK. Petra 3
Pendahuluan


UK. Petra 4
Pendahuluan
Masalah 2:

Sebuah program untuk mensimulasikan
sebuah permainan kartu. Satu aspek dari
simulasi itu adalah untuk mengatur kartu
yang telah dibuat. Pada banyak permainan,
sebuah pemain mungkin membuang sebuah
kartu miliknya untuk diletakkan di urutan
paling atas.

Apakah sebuah struktur data dibutuhkan untuk
model kartu yang dibuang tersebut?
UK. Petra 5
Definisi
Merupakan sebuah tumpukan dari benda.

Konsep utama LIFO (Last In First Out)
Data yang pertama masuk merupakan data yang
akan pertama kali keluar.

Merupakan list linier

Dikenali elemen puncaknya
UK. Petra 6
illustrasi
UK. Petra 7
illustrasi
UK. Petra 8
illustrasi
OPERASI PADA STACK
2 operasi dasar yang bisa dilaksanakan
pada sebuah stack, yaitu:
Operasi Push (menyisipkan data)
memasukkan data ke dalam stack
Operasi Pop (menghapus data)
menghapus elemen yang terletak
pada posisi paling atas dari sebuah
stack
9 UK. Petra
OPERASI PADA STACK Cont.
1. buat stack (stack) - create
membuat sebuah stack baru

spesifikasi:
tujuan : mendefinisikan stack yang
kosong
input : stack
syarat awal : tidak ada
output stack : - (kosong)
syarat akhir : stack dalam keadaan
kosong
10
OPERASI PADA STACK Cont.
2. stack kosong (stack) empty
menentukan apakah stack kosong
atau tidak

spesifikasi:
tujuan : stack kosong?
input : stack
syarat awal : tidak ada
output : boolean
syarat akhir : stack kosong bernilai true
jika stack dalam keadaan kosong
11
OPERASI PADA STACK Cont.
3. stack penuh (stack) full
memeriksa apakah stack yang ada sudah
penuh

spesifikasi:
tujuan : mengecek apakah stack dalam keadaan
penuh
input : stack
syarat awal : tidak ada
output : boolean
syarat akhir : stack penuh bernilai true jika stack
dalam keadaan penuh
12
OPERASI PADA STACK Cont.
4. push (stack, info baru)
menambahkan sebuah elemen
kedalam stack.
spesifikasi:
tujuan : menambahkan elemen, info
baru pada stack pada posisi paling atas
input : stack dan Info baru
syarat awal : stack tidak penuh
output : stack
syarat akhir : stack bertambah satu
elemen
13
OPERASI PADA STACK Cont.
5. pop (stack, info pop)
mengambil elemen teratas dari stack
spesifikasi:
tujuan : mengeluarkan elemen dari stack
yang berada pada posisi paling atas
input : stack
syarat awal : stack tidak kosong
output : stack dalam info pop
syarat akhir : stack berkurang satu
elemen
HARJANTO SUTEDJO 14
CONTOH PEMANFAATAN STACK
Notasi Infix Prefix
Notasi Infix Postfix

HARJANTO SUTEDJO 15
UK. Petra 16
Stack dengan ARRAY
Sesuai dengan sifat stack (LIFO),
maka pengambilan / penghapusan
pada stack harus dimulai dari
elemen teratas

UK. Petra 17
Operasi Stack Array
IsFull
Fungsi yang digunakan untuk memeriksa apakah
stack sudah penuh.

Stack penuh apabila puncak stack berada tepat
di bawah jumlah maksimum yang dapat
ditampung stack
atau
Top = STACK_SIZE-1

Push
Fungsi yang digunakan untuk menambahkan
elemen ke dalam stack dan selalu dilakukan
pengecekan apakah stack sudah penuh

UK. Petra 18
Operasi Stack Array
IsEmpty
Fungsi yang digunakan untuk menentukan
apakah stack kosong atau tidak.

Stack kosong apabilah top (penunjuk stack)
bernilai kurang dari nol.
atau
Top < 0;

Pop
Fungsi yang digunakan untuk mengambil
elemen teratas dari stack.
UK. Petra 19
Class Stack
Class 1
Merupakan class untuk objek yang
dibuat

Class 2
Merupakan class untuk stack

Class 1 dan Class 2 akan
berhubungan dengan cara
composite
UK. Petra 20
Contoh Class 1
class Contoh
{
private:
int contoh_id();
public:
Contoh();
int getID();
~Contoh();
};
UK. Petra 21
Contoh Class 2
#define STACK_SIZE 25

class Stack
{
private:
int StackPtr;
Contoh * array_stack [STACK_SIZE];
public:
Stack();
int is_empty();
bool push (Contoh *);
Contoh * pop ();
Contoh * getTop ();
Contoh * getElement (int);
int getStackPtr ();
};
UK. Petra 22
Contoh Class 2
Stack::Stack()
{ stackPtr = -1; }

int Stack::is_empty()
{ return stackPtr >=0 }

bool Stack::push(Contoh * isinya)
{
if (stackPtr + 1 == STAK_SIZE)
return false;
array_stack[++stackPtr] = isinya;
return true;
}
UK. Petra Struktur Data Semester Genap 2007/2008 23
Contoh Class 2
Contoh * Stack::pop()
{
return array_stack[stackPtr--];
}

Contoh * Stack::getTop()
{
return array_stack[stackPtr];
}

Contoh * Stack::getElement (int pos)
{
if (pos < 0 || pos > stackPtr)
return 0
return array_stack[pos];
}
UK. Petra Struktur Data Semester Genap 2007/2008 24
Contoh Class 2
Int Stack::getStackPtr()
{
return stackPtr;
}
UK. Petra 25
Infiks, Prefiks, Postfiks
Prefiks
operator berada di depan operands

Postfiks
operator berada di belakang operands

Infiks
operator berada di antara operands

UK. Petra 26
Contoh
Contoh:
Infiks : A + B * C
Postfix : A + (B * C)
A + (B C *)
A (B C *) +
A B C * +
Prefix : A + (B * C)
A + (* B C)
+ A(* B C)
+ A * B C


UK. Petra 27
Urutan kekuatan operator
Operator memiliki kekuatan yang
berbeda

Urutan kekuatan operator dari yang
tertinggi:

Pangkat
Bagi / Kali
Tambah / Kurang

Latihan
A B T ^ 3 * + 4 5 * -
Infiks :
A+(B^T)*3-4*5
Prefiks :
-+A*^BT3*45
C * 4 + ( 3 / 2) * ( 4
B )
Prefiks :
+*C4*/32-4B
Postfiks :
C4*32/4B-*+
3 2 3 + * 4 / 5 +
Infiks :
3*(2+3)/4+5
Prefiks :
+/*3+2345
+ / * ^ M 5 4 A * B
D A
Infiks :
M^5*4/A+B*(D-
A)
Postfiks :
M5^4*A/BDA-*+

Anda mungkin juga menyukai