Stack Tumpukan - WordPress.com · =5. Page 20 3. Mak Stack Top Of Stack = Max Of stack-1 =6-1 =5....

21
Page 1 Stack Tumpukan

Transcript of Stack Tumpukan - WordPress.com · =5. Page 20 3. Mak Stack Top Of Stack = Max Of stack-1 =6-1 =5....

Page 1

StackTumpukan

Page 2

StackTumpukan

Merupakan bentuk khusus dari Linier Listyang pemasukan dan penghapusanelemennya hanya dapat dilakukan padasatu posisi, yaitu posisi akhir dari List (Top)

Prinsip Stack adalah LAST-IN-FIRST-OUT (LIFO).

Page 3

Operasi Stack

• ISEMPTY

Untuk memeriksa apakah stack kosong

• ISFULL

Untuk memeriksa apakah stack sudah penuh

• PUSH

Untuk menambahkan item pada posisi paling atas(TOP)

• POP

Untuk menghapus item paling atas (TOP)

• CLEAR

Untuk mengosongkan stack

Page 4

Stack Pada Array

Deklarasi MAX_STACK

#define MAX_STACK 5

Deklarasi STACK dengan struct dan array data

typedef struct STACK{

int top;

int data[5];

};

Deklarasi variabel stack dari struct

STACK tumpuk;

Page 5

Page 6

• Pada mulanya isi top dengan

-1, karena array dalam

C/C++ dimulai dari 0, berarti

stack adalah KOSONG

• TOP adalah variabel

penanda dalam STACK yang

menunjukkan elemen teratas

Stack.

MAX_STACK4

3

2

• TOP of STACK akan selalu

bergerak hingga mencapai

MAX of STACK sehingga

menyebabkan stack PENUH

1

0

TOP = -1

void inisialisasi ()

{

tumpuk.top = -1

}

Inisialisasi

Page 7

• Digunakan untukmemeriksa apakahstack masih dalamkondisi kosong

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

4 MAX_STACK

3

2

1

0 TOP = -1

int IsEmpty ()

{

if (tumpuk.top == -1

return 1;else

return 0;

}

Fungsi IsEmpty

Page 8

• Digunakan untuk memeriksa apakah kondisisudah penuh

stack

• Dengan cara memeriksa TOP of Stack.Jika TOP of STACK = MAX_STACK-1 maka

(Penuh).

Jika TOP of STACK < MAX_STACK-1 maka

penuh

FULL

belum

Fungsi IsFull

Page 9

4 MAX_STACK

TOP = 43

2

1

0

E

D

C

B

A

int IsFull ()

{

if (tumpuk.top == MAX_STACK-1

return 1;else

return 0;

}

Page 10

• Digunakan untuk memasukkan elemen ke dalamdan selalu menjadi elemen teratas stack

stack

• Dengan cara :

1. Menambah satu (increment) nilai TOP of

STACK setiap ada penambahan elemen

stack selama stack masih belum penuh

Isikan nilai baru ke stack berdasarkan indeks2.of

TOP

STACK setelah ditambah satu (diincrement)

Fungsi PUSH

Page 11

void push (char d[5])

{

tumpuk.top++

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

}

Page 12

• Digunakan untuk menghapus elemen yang berada padaposisi paling atas dari stack.

Dengan cara :•

1. Ambil dahulu nilai elemen teratas stack dengan

mengakses TOP of STACK.

2.

3.

Tampilkan nilai yang akan diambil.

Lakukan decrement nilai TOP of STACK

sehingga jumlah elemen stack berkurang 1

Fungsi POP

Page 13

void pop ()

{

printf(“Data yg di POP = %s\n”, tumpuk.data[tumpuk.top]);

tumpuk.top--;

}

Page 14

• Digunakan untuk mengosongkan stack / membuat stack

hampa sehingga Top pada Stack berada kembali di

posisi Top = -1

Fungsi CLEAR

Page 15

Latihan Soal

Diketahui suatu stack dgn max_stack = 6

1. Bila dilakukan PUSH 3 elemen kedalam stack,

kemudian di PUSH lagi 2 elemen dan di POP 3 elemen.

Maka dimana posisi Top of Stack ?

2. IsEmpty pada kondisi terakhir adalah ?

3. Dari kondisi diatas, Berapa elemen yg hrs di PUSH

untuk mencapai kondisi penuh Top of Stack =

max_stack ?

4. Berapa elemen yg hrs di POP unt mencapai kondisi

IsEmpty = True

Page 16

Jawaban1. mis: data yang ditambah adalah A,B,C

a. Push 3

Top Of Stack =Top+Push

=-1+3 =2

Page 17

b. Push lagi 2

Top Of Stack =Top +Push

=2+2 =4

Page 18

c. POP 3

Top Of Stack = Top-POP

Top =4-3

Top=1

Page 19

Jika TOP of STACK < MAX_STACK-1 maka

Belum penuh.

Top Of Stack = Top-POP

Top =4-3

Top=1

Penuh Jika

TOP = Max_stack -1

=6-1

=5

Page 20

3. Mak Stack

Top Of Stack = Max Of

stack-1

=6-1

=5

Page 21

4. Banyaknya yang di POP