Monday 26 March 2018

Stack dan Queue


Assalamualaikum wr.wb
Kali ini saya akan membahas tentang Stack dan Queue.

v  Stack (tumpukan)
 kumpulan elemen-elemen data yang disimpan dalam satu lajur linier, merubah bilangan decimal ke bilangan oktal .Kumpulan elemen data hanya boleh diakses pada satu lokasi saja yaitu posisi atas (TOP) tumpukan. Tumpukan digunakan dalam algoritma pengimbas (parsing), algoritma penilaian (evaluation) dan algoritma penjajahan balik (backtrack). Konsep utamanya adalah “LIFO” yaitu LAST IN FIRST OUT artinya eleme yg terakhir masuk akan pertama dikeluarkan dari tumpukan (stack).

Operasi yang diterapkan Stack sebagai berikut :
1.      Push   : digunakan untuk menambah item pada stack tumpukan paling Atas.
2.      Stack :  record
3.      Isi      : array [1….n] of tipe data
4.      Atas  : integer
5.      Pop    : digunakan untuk mengambil item pada stack pada tumpukan paling Atas.
6.      Clear  : digunakan untuk mengosongkan stack.
7.      Create Stack : membuat tumpukan baru dengan jumlah elemen kosong.

Contoh  : hasil 11
2
5
2
2
2
1
Langkah pertama

 11/2 = 5 sisa 1
 5/2  = 2 sisa 1
 2/2  = 1 sisa 0



1
0
1
1


                       
               



Angka 1 yang paling atas disebut Top  dan angka 1 yg terakhir disebut bottom.
Hasil awal di letakkan di akhir tumpukan dan yang pertama dikeluarkan adalah yang tumpukan teratas

Contoh 2 : 21010  : X8
                   210 / 8          hasil  26           sisa 2¹
                   26 / 8            hasil 3³              sisa 2²
Push


3
2
2

Pop (keluaran) 3,2,2
Jadi bilangan oktalnya adalah 3 2 2 .

Sebelumnya sudah tahu apa itu palindrome?.
Palindrome adalah suatu kata atau kalimat yang bisa dibaca baik dari depan maupun belakang dengan bunyi yang sama. Misal :
– Malam
– Katak
– Macam
–Kakak

Kalimat tersebut di atas jika dibaca dari depan maupun belakang akan memiliki urutan huruf yang sama.
Hubungan palindrome dengan Stack kali ini adalah saya akan menulis sebuah kode program yang digunakan untuk mengecek apakah sebuah kata atau kalimat merupakan palindrome atau bukan dengan bantuan Stack.

<html>
<head>
    <title>Struktur Data Stack</title>
    <script language ="JavaScript">
        var stack = new Array();
        var hasil = 0;
      
function testarr() {
  this.stack = new Array();

  this.Push = function(obj) {
    this.stack[this.stack.length] = obj;
  }

  this.Pop = function() {
    if (this.stack.length > 0) {
      var obj = this.stack[this.stack.length - 1];
      this.stack.splice(this.stack.length - 1, 1);
      return obj;
    } else {
      alert("");

    }
  }
}

function palindrome(data) {
  var mystack = new testarr();
  var text1;
  var text2 = "";
  var i;
  var t;
  text1 = data;
  i = text1.length;
  t = text1.length;

  do {
    mystack.Push(text1.substr(t - i, 1));
    i--;
  } while (i > 0);

  do {
    text2 += mystack.Pop();
    t--
  } while (t > 0);
  if (text1 === text2) {
    document.getElementById("txtCEK").innerHTML = "ini Palindrome";
   
  } else {
    document.getElementById("txtCEK").innerHTML = "ini Tidak Palindrome";
    PushData(text1);
  }

}
        function PushData(data)
        {
            stack.push(data);
        }
      
        function PopData()
        {
            var data_dari_stack = stack.pop();
            if(data_dari_stack == undefined)
                return "Stack Sudah Kosong";
            else
                return data_dari_stack;
        }
      
        function TampilkanStack(list)
        {
            list.options.length = 0;
            for(var i=0; i<stack.length; i++)
            {
                var data = new Option(stack[i]);
                list.options[list.options.length] = data;
            }
            PeekData();
            document.getElementById("txtBanyak").innerHTML = stack.length;
        }
      
        function HapusData()
        {
            stack = [];
        }
      
        function PeekData()
        {
            var hasil = stack.length;
            if(hasil == 0 || hasil == undefined)
                document.getElementById("txtAtas").innerHTML = "Kosong";
            else
                document.getElementById("txtAtas").innerHTML = stack[hasil - 1];
        }
    </script>
</head>
<body>
    <form>
        <p><input type=text name=textSimpan>
        <input type=button value="Masukkan ke Stack"
            onClick='palindrome(textSimpan.value);textSimpan.value="";
        TampilkanStack(mediaList);'></p>
        <p>Data di dalam stack:<br/>
        <select name="mediaList" size="12">
            <option>Tampilan data.....
        </select></p>
        <p><input type=text name=textAmbil size=20>
        <input type=button value="Ambil dari Stack" onClick="textAmbil.value = PopData();
            TampilkanStack(mediaList);">
        <input type=button value="Hapus Data" onClick="HapusData();
            TampilkanStack(mediaList);"><br>
        <label>Palindrome Data:</label><label id="txtCEK"></label><br>
        <label>Banyak Data:</label><label id="txtBanyak"></label><br>
        <label>Data Terakhir:</label><label id="txtAtas"></label></p>
    </form>
</body>
</html>

Maka akan Tampil seperti ini

Struktur Data Stack

Data di dalam stack:







v  Queue (antrian)
Konsepnya hampir sama dengan Stack , perbedaannya adalah operasi penambahan dan penghapusan pada ujung yang berbeda . Penghapusan dilakukan pada bagian depan(front) dan penambahan berlaku pada bagian belakang (rear).

Contoh : 1 2 3 4 5
                  1 = depan
                  5 = belakang
Antrian dengan larik
1
2
3
4
5
                     0          1          2         3         4
    
      1= depan
      5= belakang

Contoh Programnya : 
<html>
<head>
    <title>Queue Tugas 5</title>

<style>

header {
height: 100px;
background-color: grey;
text-align: center;
}

body {
background-color: aqua;
}


</style>
    </head>
        <script type="text/javascript">
            var queue = new Array();
            var ganjil = new Array()
            var genap = new Array();
            var x=0;
            var y=0;
                function td()
                    {
                        for (var i = 0 ;i<20;i++)
                            {
                                queue[i] = Math.floor(Math.random()*(50-1))+1;
                                document.getElementById("hasil").innerHTML +=queue[i]+"<br>";
                            }
                    }

            function dequeue()
                {
                    var dambil = queue.pop();
                    if(dambil==undefined)
                    {
                        return "queue udah habis"
                    }
                    else
                    {
                        hasil = dambil%2;
                        if(hasil==0)
                        {
                            genap.push(dambil);
                            document.getElementById("gen").innerHTML += dambil+"<br>";
                            x++;
                            return dambil;
                        }
                        else
                        {
                            ganjil.push(dambil);
                            document.getElementById("gan").innerHTML += dambil+"<br>";
                            x++;
                            return dambil;
                        }
                    }
                }

            function jum()
                {
                    if(ganjil[y]==undefined)
                    {
                        a = genap[y]+0;
                        y++;
                        document.getElementById("has").innerHTML += a+"<br>";
                    }
                    else if(genap[y]==undefined)
                    {
                        b = ganjil[y]+0;
                        y++;
                        document.getElementById("has").innerHTML += b+"<br>";
                    }
                    else
                    {
                        c=ganjil[y]+genap[y];
                        y++;
                        document.getElementById("has").innerHTML +=c+"<br>";
                    }
                }

        </script>
<body>
<header>
    <h1 align="center">Queue Random</h1>
</header>  
<label id="hasil"></label><br>
<input type="button" value="Queue Random" onclick="td()"><br>
<input type="text" id="simpan"></td>
<input type="button" value="Scan Queue" onClick="simpan.value=dequeue()"><br>
<label>Genap :</label>
<label id="gen"></label>
<label>Ganjil :</label>
<label id="gan"></label>
<input type="button" value="Jumlahkan" onclick="jum()"><br>
<label>Hasil :</label><br>
<label id="has"></label><br>
</body>
</html>


Maka akan tampil seperti dibawah ini :

Queue Tugas 5

Queue Random








itulah penjelasan yang saya sampaikan ,semoga bermanfaat 😊, Wassalamualaikum wr.wb




No comments:

Post a Comment