You are on page 1of 22

Dalam struktur STACK, digunakan istilah :

- PUSH untuk : Simpan, atau Masuk, atau


Insert, atau Tulis.
- POP

untuk : Ambil, atau Keluar, atau


Delete, atau Baca, atau Hapus

void AWAL(void)
{
Top
= -1;
}

1.2.3 Macam Proses pada Stack

n-1

a. AWAL (Inisialisasi)
b. PUSH (Insert, Masuk, Simpan, Tulis)
c. POP (Delete, Keluar, Ambil , Baca / Hapus)
Proses AWAL

Pertanyaan : dalam keadaan seperti sekarang


Kalau ada perintah PUSH (Isi, Masuk, Simpan)
maka akan diisi di elemen nomor : 4
dan Top akan menunjuk elemen nomor : 4

Sebelum nilai X diPUSH


131
27
140 5 n1
2 25
6 1 7
Ke Stack
S[ ]
3 15

Setelah nilai X diPUSH


0 1
2 25
31
40
5 n6 1 7
1
2
7
1
15
Ke Stack
S[ ]

Top

TopX

4 15
Top
TopX

Sesudah :

S[ ]
Pertanyaan : dalam keadaan seperti sekarang
Kalau ada perintah POP ( Keluar, Ambil)

algoritma dasar

atau :

push

maka akan diambil isi elemen nomor : 3


dan setelah itu Top akan menunjuk elemen nomor : 2

12217 10
Sebelum
0 25
1POP
3 4
S[ ]

Top
25
12
17
Setelah
POP 2
0 1
3 4
S[ ]
Top

63 7

8n-19

62 7

8n-19
10

Top
Top

X
X

untuk pop algoritma yg benar


S[Top] = X;
Top = Top - 1;

X = S[Top--];

Catatan :
Semua variabel dibuat
bersifat GLOBAL

13

Top
2
3XXX
4X

5 n-61

5 n-61

X4XXXX
XX61
3 3XXTop
n5X

Top

Bila KOSONG
jangan POP
else
lakukan POP
Bila PENUH
jangan PUSH
else
lakukan PUSH

10

11 12 13

10

c.

n-1
11 12 13 14 15 16 17 18 19

a.

d.

void PUSH1(void)
{
if (Top2 - Top1 == 1 )
printf(Stack Penuh);
else
{
Top1
= Top1 + 1;
S[Top1] =
X;
}

b.
}

Que linier

Q[++R] = X;

F > R
atau
F = R + 1
Antrian KOSONG

atau :

F < R+1

a.

b.

Algoritma dasar untuk proses AWAL (Inisialisasi),

void AWAL(void)
{

Counter > 0

F = 0;
R = -1;
Counter = 0;
}

if ( PENUH )

c.

if ( KOSONG )

Algoritma : L = L - 1;
Q[L] = X;
Kalau ada perintah keluar dari kanan,

Algoritma : X = Q[R];
R = R - 1;
Kalau ada perintah keluar dari kiri,

Double queue
Kalau ada perintah masuk dari kanan

Algoritma : R = R + 1;
Q[R] = X;
Kalau ada perintah masuk dari kiri,

Algoritma : X = Q[L];
L = L + 1;
c.2. Delete Kanan

b.2. Insert Kanan

R == n-1 && L == 0

L > 0

L < R+1
atau
L <= R
atau
R > L-1
atau
R >= L

a.

b2. Delete Kanan

Lish

Ada 4 instruksi pokok

Ada 5 intruksi pokok

Algoritma untuk : INSERT TENGAH


Bila pointer Q sudah menunjuk simpul
Yang disebelah kiri :

Ada 5 instruksi pokok

Q = FIRST->LINK;
free(FIRST);
FIRST = Q;

Apabila sebelum dihapus nilai INFO


(25) Harus dicetak, maka perlu ditambah instruksi

Q->LINK = R;

Menghapus
simpul (8)

Atau:

Linear Doubly
Linked List

Q = FIRST;
Tot = 0;
while (Q != NULL)
{ Tot=Tot+Q->INFO;
Q = Q->LINK;
}
printf(%i, Tot);

(2)

&(2)

Linear DoublyLinked List INSERT KIRI

(1)

NULL

Linear DoublyLinked List INSERT TENGAH

You might also like