My first Magazine pemrograman-kompetitif-dasar | Page 93
8.2 Stack
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure PUSH (item)
if size = maxSize then
tempA ← new integer[2 × maxSize]
for i ← 0, maxSize − 1 do
tempA[i] ← A[i]
end for
delete A
A ← tempA
maxSize ← 2 × maxSize
end if
A[size] ← item
size ← size + 1
end procedure
. Ciptakan array baru yang lebih besar
. Salin isi array A
. Hapus array A dari alokasi memori
. Ubah referensi A ke array yang baru
Apabila Anda menggunakan bahasa C++, Anda dapat langsung menggunakan library dynamic
array yang tersedia dengan nama vector. Pada Java, dynamic array disediakan berupa class
ArrayList.
II Sekilas Info JJ
Pada implementasinya, perbesaran ukuran array tidak harus menjadi 2x lipat. Misalnya, kita
dapat menggunakan faktor perbesaran 1.5x lipat. Ternyata dengan faktor perbesaran 1.5x
lipat, dynamic array bisa menjadi lebih efisien karena tidak banyak memori yang terbuang.
Selain itu, ukuran array mula-mula juga tidak harus 1.
8.2 Stack
Stack dapat dimisalkan seperti tumpukan piring pada umumnya. Jika terdapat piring baru
yang ingin dimasukkan, maka piring tersebut masuk dari paling atas. Jika sebuah piring akan
diambil dari tumpukan, maka yang diambil juga piring yang paling atas.
Gambar 8.1: Ilustrasi tumpukan piring.
Struktur data stack menyimpan informasi dalam bentuk seperti tumpukan. Informasi terbaru
akan dimasukkan ke paling atas tumpukan. Hanya informasi paling atas yang bisa diakses/dihapus
pada setiap waktunya. Oleh karena itu struktur data stack disebut memiliki sifat LIFO (Last In
First Out ).
83