Langsung ke konten utama

Stack and Queue

                                           
Hari ini kita akan membahas tentang Stack and Queue. Pertama - tama kita akan membahas tentang Stack terlebih dahulu.

Apa itu Stack? Stack adalah salah satu list linear dalam struktur data yang digunakan untuk menyimpan dan mengambil data dengan konsep LIFO (Last In First Out). Dimana dalam stack ini kumpulan data yang masuk diletakkan di atas data yang lain. Dan berdasar konsep LIFO maka data yang terakhir kali disimpan dalam stack akan menjadi data yang pertama kali diambil. Dalam prosesnya, Stack sering menggunakan operator push dan pop, push digunakan untuk menembah item pada Stack pada Tumpukan paling atas dan untuk pop digunakan untuk mengambil item pada Stack pada Tumpukan paling atas. Sedangkan dalam penyajiannya, stack bisa memakai array atau linked list.

Untuk cara kerjanya sendiri mari kita perhatikan gambar kotak kosong dibawah ini :


Sekarang mari kita isikan kotak tersebut dimulai dari angka 1 - 2 - 3 - 4 - 5 - 6 :


Mungkin diantara kalian ada yang bertanya tanya, kenapa yang dimasukkan nomor 1 ada di bottom? kenapa tidak di top? Karena nomor 1 adalah angka pertama yang masuk di dalam kotak array diatas, dimana posisinya tepat ada di bottom (Array index[0] ) jadi seperti kita menumpuk barang, dimana barang yang kita taruh pertama ( nomor 1 ) pasti posisinya berada di bawah, dan barang yang baru masuk atau yang terakhir masuk ( yaitu nomor 6 ), posisinya persis diatas barang yang sebelumnya masuk.

Jika pertama kita tadi kita memasukkan angka yang ber utut yaitu 1 - 2 - 3 - 4 - 5 - 6, sekarang mari kita coba keluarkan atau Pop data diatas, apakah masih sama dengan urutan pertama memasukkan?


Hasil menunjukkan ketika kita pop data yang sebelumnya urutannya 1 - 2 - 3 - 4 - 5 - 6 menjadi 6 - 5 - 4 - 3 - 2 - 1. Kenapa demikian? karena kita mengeluarkan data atau pop pertama pada posisi Top, yaitu data yang terakhir kali masuk dan diakhiri dengan data yang pertama masuk. Jadi kesimpulannya jika kita memasukkan sebuah data pada menggunakan metode Stack maka hasil saat dikeluarkan atau Pop berbeda saat pertama kali memasukkan data atau Push.

Sekarang mari kita berganti topik, dimana tadi saya menjelaskan tentang Stack, sekarang saya akan menjelaskan tentang Queue. Apa itu queue? Queue merupakan suatu struktur data linear. Konsepnya hampir sama dengan Stack, perbedaannya adalah operasi penambahan dan penghapusan pada ujung yang bebeda. Penghapusan dilakukan pada bagian depan (front) dan penambahan berlaku pada bagian belakang (Rear). Elemen-elemen di dalam antrian dapat bertipe integer, real, record dalam bentuk sederhana atau terstruktur. Tumpukan disebut juga “Waiting Line” yaitu penambahan elemen baru dilakukan pada bagian belakang dan penghapusan elemen dilakukan pada bagian depan. Sistem pada pengaksesan pada Queue menggunakan sistem FIFO (First In First Out), artinya elemen yang pertama masuk itu yang akan pertama dikeluarkan dari Queue. Queue jika diartikan secara harfiah, queue berarti antrian. Queue merupakan salah satu contoh aplikasi dari pembuatan double linked list yang cukup sering kita temui dalam kehidupan sehari-hari, misalnya saat anda mengantri diloket untuk membeli tiket.

Berikut adalah contoh prngerjaan Queue :


Dari kotak diatas terdapat Head dan Tail atau sama dengan Front dan Rear pada penjelasan diatas, mari kita isi dengan data A - B - C - D - E - F :


Jadi proses awal pemasukkan dimulai dari A ( Head ) lalu di tutup dengan F ( Tail ). Untuk proses pengeluarannya sendiri queue berbeda dengan stack, jika stack keluar dan masuk melalui satu jalur yaitu top, kalau queue memiliki dua jalur yaitu jalur masuk ( masuk dari Tail ) dan jalur keluar ( keluar dari head ). Sekarang kita keluarkan data diatas, apakah hasilnya akan berubah seperti proses Stack?


Yap, dari proses pengeluaran diatas, hasil akhir tampak berbeda dengan stack, karena data setelah dikeluarkan sama dengan urutan yang dimasukkan pertama.

Sekarang, mari kita implementasikan teori diatas didalam koding javascript. Kita mulai dengan materi Stack terlebih dahulu, berikut soalnya :

Buatlah sebuah aplikasi palindrome menggunakan metode stack :

Pertama, kita buat dulu function push data :


Fungsi dari function diatas adalah mengisikan data kedalam stack, data didapatkan dari inputan yang kita masukkan nantinya.

Kedua, kita membuat function tampil(list) :


Function diatas digunakan untuk membaca sebuah data stack yang telah kita inputkan dan menampilkannya kedalam ListView, data yang dimasukkan kedalam ListView sebanyak data yang kita masukkan.

Ketiga, membuat function hapus data :


Seperti nama functionnya, hapusdata() digunakan untuk menghapus data dalam sebuah stack.

Keempat, membuat function popdata


Function popdata berfungsi untuk mengambil data terakhit dari sebuah stack, dan jika data tersebut kosong maka akan menampilkan sebuah tulisan "No Data". didalam function ini terdapat sebuah pembanding data juga, dimana jika data tersebut sama maka akan mengeluarkan sebuah tulisan Sama jika berbeda maka akan mengeluarkan tulisan Beda.

Kelima, membuat function PeekData()


Pada function ini peekdata berfungsi untuk melihat data terakhir dari sebuah stack, dimana jika data dari stack kosong atau undefined maka akan keluar sebuah pesan bertuliskan "Kosong", selain statement diatas, maka akan ditampilkan data sebuah stack pada indeks - 1.

Keenam membuat bagan body :



Sekarang, kita lihat hasil dari kodingan kita :


Saat kita ambil stack nya :


Sekarang, kita beralih untuk pengimplementasian dari teori Queue, Berikut contoh soalnya :

Buatlah sebuah aplikasi Queue menentukkan bilangan ganjil atau genap yang dikelompokkan. Jumlah kan data ganjil dan genap sesuai indeks nya, lalu tampilkan hasil penjumlahannya. Jika data tidak mempunyai pasangan penjumlahan, maka data otomatis di tambahkan bilangan 0!

Pertama kita membuat function untuk mendapat kan data random sebanyak 20 data :


Kedua kita akan membuat function dequeue


Fungsi dari function diatas hampi sama dengan popdata pada stack, yang menjadi pembeda adalah statement perbandingan, pertama data akan di modulus dengan nilai 2, jika data tersebut hasilnya adalah 0 maka data akan ditaruh pada golongan genap, selain itu maka data akan ditaruh pada golongan ganjil.

Ketiga, kita membuat function yang akan menjumlakan ganjil dan genap sesuai urutan indeks.


Dari function diatas dapat kita simpulkan, jika sebuah bilangan tidak mempunyai pasangan maka akan dijumlahkan oleh bilangan 0, tetapi jika suatu bilangan mempunyai pasangan yang sama dengan indeks, maka akan dijumlahkan.

Keempat, membuat bagian body :



Sekarang hasil akhirnya jika dijalankan :
Random Number :


Scan Queue :


Jumlah Data :


Begitulah hasil akhir dari Queue Ganjil Genap menggunakan Random Number.
Nah bagaimana sejauh ini? udah paham tentang materi Stack dan Queue? jika ada yang belum paham, silahkan tulis pertanyaannya di kolom komentar :D sekian dari saya, terima kasih telah menyimak artikel materi di blog ini dan mohon maaf jika artikel ini kurang membantu. Sekian.

Komentar

Postingan populer dari blog ini

Cara Membuat Input dan Output menggunakan Javascript

                                         Halo semua, kali ini saya akan memposting sebuah tutorial yang diajarkan oleh dosen saya tentang Input dan Output menggunakan Javascript. KLIK GAMBAR UNTUK MEMPERBESAR !!! Pertama - tama kita membuat file bernama inputoutput.html (Perlu diketahui bahwa saya menggunakan aplikasi notepad++ ) Lalu, buatlah label dan juga textbox seperti gambar ini : Pengertian tag input type : Untuk menentukan inputan apa yang akan kita gunakan semisal TEXT berguna untuk inputan berjenis text jadi hanya menampilkan jenis text. Dan untuk kegunaan id sendiri selain untuk memudahkan manipulasi elemen input di sisi browser, dengan menggunakan JavaScript, dengan adanya id kita bisa mendefinisikan hubungan antara label dan inputan. Dan untuk kegunaan disable pada inputan output berfungsi untuk menonaktifkan textbox nya. Untuk disable sendiri bisa tidak digun...

Cara Membuat Kalkulator Menggunakan HTML + Javascript

                                            Halo semua, hari ini kita akan mempraktekkan bagaimana sih cara membuat kalkulator di dalam web :D sebelumnya kita telah membahas tentang bagaimana "Cara Membuat Penjumlahan Menggunakan Javascript" . Sebenarnya cara kali ini hampir sama dengan penjumlahan sebelumnya, tapi ada sedikit perbedaan :D apakah itu? mari kita praktekkan sama - sama. Pertama kita membuat file html terlebih dahulu, lalu ketikkan kode seperti gambar berikut ini : Hasil dari koding diatas akan persis seperti ini : Disini kita hanya membutuhkan 2 form textbox input untuk pengisian kedua nomor yang akan di jumlahkan, satu label hasil untuk output nya dan juga 4 button yang terdiri dari Penjumlahan, Pengurangan, Perkalian dan juga Pembagian. Untuk nama variable pada button bisa kalian ganti sesuka hati :D jika masih belum paham apasih var itu dan apa kegunaa...

Cara Membuat Penjumlahan Menggunakan Javascript

                                     Hari ini kita akan membahas cara pembuatan menggunakan javascript. Sebelumnya kita telah mempelajari tentang Input dan Output , sekarang mari kita belajar membuat penjumlahan dalam javascript ☺. Sebelumnya kita membuat file bernama "penjumlahan.html". Setelah itu mari kita membuat inputan tabel dan button terlebih dahulu. Perlu diperhatikan !!!  id pada label disesuaikan sesuai keinginan ya, mau diganti dengan nama lain gpp. Selanjutnya mari kita lihat hasil nya ! Jika hasil dari pembuatan label benar maka hasil saat dijalankan pasti sama. Sekarang mari kita membuat Javascript nya. Jika diperhatikan proses inputan di Javascipt ini sama seperti proses inputan Javascript sebelumnya yang kita pelajari "Proses Input Output", bedanya pada proses inputan kali ini kita menggunakan parseInt. Apa itu parseInt? parseInt berfungsi untuk merubah dari ...