STACK DAN QUEUE



Stack
Stack adalah tumpukan data / sekumpulan data yg seolah olah diletakkan di atas data yg lainnya. Dapat juga diilustrasikan dengan dua buah kotak yg ditumpuk ,kotak yang satau akan ditumpuk diatas kotak lainya. Jika kemudian stack 2 kotak tadi ,ditambah kotak ketiga, keempat, kelima , dan seterusnya, maka akan di peroleh sebuah stack kotak yg terdiri dari N kotak

Stack bersifat LIFO (Last In First Out) artinya data yg masuk terakhir kedalam stack maka akan menjadi yg keluar pertama dari stack

operasi - operasi yg biasa terdapat pada Stack
  1.  Push : untuk menambah data pada stack
  2.  POP : untuk untuk mengambil data pada stack
  3. Clear : untuk mengosongkan stack
  4. IsEmpty : untuk mengecek apakah stack sudah kosong
  5. IsFull : untuk mengecek apakah stack sudah penuh
contoh penggunaan stack 
  1.  mengubah angka desimal ke biner,oktal,heksa desimal
  2. mengecheck kalimat palindrom
contoh alur stack / penerapan stack secara umum

  • data push 

  • data pop


contoh pengkodingan stack dalam javascript

berikut ini adalah cara untuk menentukan kalimat polindrom dengan menggunakan stack

<html>
<head>

</head>
<body>
<label>masukkan kata</label><br>
<input type="text" id="kata">
<button onclick="masukkan_kata()">simpan kata</button><br>
<label>kata yang terlah tersimpan</label><br>
<label id="data_kata"></label><br>
<button onclick="ambil_kata()">pop data dan bandingkan</button><br>
<label>kata yang tersisa untuk di check</label><br>
<label id="data_tersisa"></label><br>
<label>kata yang check</label><br>
<label id="data_check"></label><br>
<label>hasil : </label><br>
<label id="hasil"></label>
</body>
</html>

<script>
var data_kata=new Array();

function masukkan_kata(){
var kata = document.getElementById('kata').value;
data_kata.push(kata);
document.getElementById('data_kata').innerHTML=data_kata;
}

function ambil_kata(){
// ambil kata pada array data kata
var i=parseInt(data_kata.length)-parseInt(1);
kata=data_kata[i];
// data pop untuk menghilangkan data dari data_kata agar tidak dibandingkan lagi
data_kata.pop();

// tampilkan data untuk informasi
document.getElementById('data_check').innerHTML=kata;
document.getElementById('data_tersisa').innerHTML=data_kata;
// memilah huruf dari kata
var res = kata.split("");
var str=res.join(',');
var temp = new Array();
temp = str.split(",");
for (a in temp ) {
temp[a] = temp[a];
}

// proses perbandingan

var data2=new Array();
var c=temp.length-1;
for(a=0; a<temp.length; a++){
//console.log(data[a]);
data2.push(temp[c]);
c=c-1;
}
// console.log(data2);
var hasil1=temp.join('');
var hasil2=data2.join('');

if(hasil1==hasil2){
document.getElementById('hasil').innerHTML='kata sama( palindrom)';
}else if(hasil1!=hasil2){
document.getElementById('hasil').innerHTML='kata tidak sama / BUKAN POLINDROM';
}
// console.log(kata);
}

</script>











Queue
 Queue adalah sekumpulan data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung disebut dengan sisibelakang(rear), dan penghapusan(pengambilan elemen) dilakukan lewat ujung lain (disebut dengan sisi depan atau front). 
Pada Stack atau tumpukan menggunakan prinsip“Masuk terakhir keluar pertama”atau LIFO (Last In First Out), Maka pada Queue atau antrian prinsip yang digunakan adalah “Masuk Pertama Keluar Pertama” atau FIFO (First In First Out).
Queue atau antrian banyak kita jumpai dalam kehidupan sehari-hari, ex: antrian Mobil diloket Tol, Antrian mahasiswa Mendaftar, dll.
Contoh lain dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu(time-sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan sistem tersebut secara serempak.
Pada Queue atau antrian Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya dimana membutuhkan variabel Head dan Tail ( depan/front, belakang/rear).

Karakteristik Queue atau antrian :
1. elemen antrian
2. front (elemen terdepan antrian)
3. tail (elemen terakhir)
4. jumlah elemen pada antrian
5. status antrian



cara kerja:
data yang masuk pertama adalah A maka yang akan lebih keluar duluan adalah data A begitu juga seterusnya .

contoh pengkodingan queue dalam javascript

berikut ini adalah menentukan bilangan ganjil dan genap dengan metode queue


<script>
var data=new Array();
var genap=new Array();
var ganjil=new Array();
// data=[2,4,5,6,7,1,9];

var jumlah;

jumlah=20;
for(var i=0; i<jumlah; i++){
data[i]=Math.floor(Math.random()*(100-1))+1;
}

document.write("data : "+data+"<br>");
for(var a=0; a<data.length; a++){
var proses=data[a]%2;
// console.log(proses);
if(proses>=1){
// console.log(data[a]+' :bilangan ganjil');
// ganjil.push(data[a]);
ganjil.unshift(data[a]);

}else if(proses==0){
// console.log(data[a]+' :bilangan genap');
// genap.push(data[a]);
genap.unshift(data[a]);
}
}
// var angka=5;
console.log("genap :"+genap);
console.log("ganjil :"+ganjil);

document.write("genap :"+genap +"<br>");
document.write("ganjil :"+ganjil +"<br>");
// for(var b=10; b<=10; b++){
// if($)
// }
var jum_genap=genap.length;
var jum_ganjil=ganjil.length;
var banyak_data;

if(jum_genap>jum_ganjil){
banyak_data=jum_genap;
}else if(jum_genap<jum_ganjil){
banyak_data=jum_ganjil;
}else if(jum_genap==jum_ganjil){
banyak_data=jum_genap;
}

var perhitungan;
var data_total=new Array();
for(var v=0; v<banyak_data; v++){
if(genap[v]!=undefined && ganjil[v]==undefined){
perhitungan=parseInt(genap[v]) + parseInt(0);
data_total.push(perhitungan);
}else if(genap[v]==undefined && ganjil[v]!=undefined){
perhitungan=parseInt(0) + parseInt(ganjil[v]);
data_total.push(perhitungan);
}else if(genap[v]!=undefined && ganjil[v]!=undefined){
perhitungan=parseInt(genap[v]) + parseInt(ganjil[v]);
data_total.push(perhitungan);
}
}

console.log("total : "+data_total +"<br>");

document.write("total : "+data_total+"<br>");

</script>

Komentar

Posting Komentar

Postingan Lainnya

GRAPH

TREE