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