Selasa, 17 April 2018


STACK

Stack  bersifat LIFO ( Last In First Out) yang artinya data yang terakhir masuk kedalam stack akan menjadi data yang pertama keluar dari stack. Pada Stack ada yang nama nya Push dan Pop. Push merupakan istilah untuk menambahkan pada stack dan Pop istilah untuk mengambil  pada Stack.
Contoh : PUSH dan POP.



Selain Push dan Pop, terdapat istilah seperti Clear, IsEmpty, IsFull, Stack Over Flow.
Clear : digunakan untuk mengosongkan isi stack
IsEmpty : untuk mengecek stack sudah kosong apa belum
IsFull : untuk mengecek stcak sudah terisi penuh
Stack Over Flow
: artinya ruang yang disediakan untuk stack sudah penuh

stack juga dapat digunakan kalimat POLINDROM( kata yang walaupun dibolak balik akan tetap sama.) Contoh : KAKAK. dan stack juga dapat digunakan untuk mencari  nilai konversi, seperti bilangan decimal ke bilangan biner, biner ke octal atau sebaliknya.
Contoh:
1.      Kalimat POLINDROM



2.      Konversi Nilai
      Contoh 1 : konversika bilangan decimal 11  ke bilangan biner.



Contoh 2  : konversikan bilangan decimal 170 ke bilangan octal.





<html>
<head>
<title>TUGAS PUSH DAN POP</title>
<script type = "text/javascript">
var stack = new Array;
var YangDiAmbil = stack.pop();
var stack = new Array();
var hasil = 0;
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];
}
//polindrome
function myFunction()
{
var str = document.getElementById('txtbox').value;
var result = checkPalindrome(str);
alert('The Entered String "'+str +'" is "'+result+'"');
}
function checkPalindrome(str)
{
var orignalStr;
str = str.toLowerCase();
orignalStr = str;
str = str.split(''); //split the entered string
str = str.reverse(); //reverse the order
str = str.join(''); //then join the reverse order array values
var reverseStr = str;
if(orignalStr == reverseStr){
return 'Palindrome'; // return "Palindrome" if true
}else{
return 'Not Palindrome';
}
}
</script>
</head>
<body align=center bgcolor=black>
<font color=white>
<form>
<p><input type=text name =textSimpan>
<input type=button value="Masukan ke stackonClick='PushData(textSimpan.value);textSimpan.value="";
TampilkanStack(mediaList);'></p>
<p>Data di dalam stack:<br/>
<select name="mediaListsize="12">
<option>Tampilkan data</select></p>
<p><input type=text name=textAmbil size=20>
<input type=button value="Ambil dari StackonClick="textAmbil.value = PopData();
TampilkanStack(mediaList);">
<input type=button value="Hapus DataonClick="HapusData(); TampilkanStack(mediaList);"><br>
<label>Banyak Data: </label><label id="txtBanyak"></label><br>
<label>Data terakhir : </label><label id="txtAtas"></label></p>
<h4>Find The Polindrome here</h4>
<input type="textid="txtboxplaceholder="Enter String" />
<input type="buttononclick="myFunction()value="Check Palindrome" />
</form>
</font>
</body>
</html>


Data di dalam stack:
  

Find The Polindrome here





RECURSION (REKURSI)
Rekursi adalah proses pemanggilan fungsi yang memanggil dirinya sendiri secara langsung maupun tidak langsung. Contoh rekursi dalam kehidupan sehari-hari adalah mimpi di dalam mimpi.
Contoh rekursi adalah pada proses pengerjaan factorial:
·         5! = 5*4*3*2*1 = 120

Hasil=1;
For(int bilangan=5, bilangan>=1; bilangan --)
{
          Hasil = Hasil * bilangan
}
·         FunctionFactorial
{
      IF(n===0)
      {
                  Retrurn 1;
      }
      Else
      {
                  Return n*Factorial(n-1);
      }
}
Contoh : factorial 3


QUEUE
Tidak seperti STACK , QUEUE bersifat  prinsip FIFO/ First In First Out artinya adalah data yang pertama masuk adalah data yang pertama keluar. Dalam kehidupan sehari-hari queue dapat diibaratkan seperti antrian orang ke Bank , Cara menambahkan dalam queue kita dapat menggunakan Enqueue, sedangkan untuk mengurangi yang ada didalam queue kita bisa menggunakan Dequeue. Didalam queue terdapat 2 elemen yaitu elemen depan ( front/head) dan element belakang (Rear / Tail)
Contoh : Enqueue.



Contoh : Dequeue.





<html>
<head>
<title>Bilangan Ganjil Genap</title>
<script>
var queue = new Array;
document.write("Cek queue :"+queue.toString()+"<br>");
var YangDiAmbil = queue.pop();
document.write("" +queue.toString());
var queue = new Array();
var hasil = 0;
function Enqueue(data)
{
queue.unshift(data);
hasil=data % 2
if (hasil==0) {
alert("Genap!")
}
else {
alert("Ganjil!")
}
}
function Dequeue()
{
var data_dari_queue = queue.pop();
if (data_dari_queue == undefined)
return "queue sudah kosong";
else
return data_dari_queue;
}
function TampilkanQueue(list)
{
list.options.length = 0; //set data dari 0 dan hitung berdasarkan banyak queue
for (var i = 0;i < queue.length;i++)
{
var data = new Option(queue[i]);
list.options[list.options.length] = data;
}
PeekData();
document.getElementById("txtBanyak").innerHTML = queue.length;
}
function HapusData()
{
queue = [];
}
function PeekData()
{
var hasil = queue.length;
if(hasil==0|| hasil == undefined)
document.getElementById("txtAtas").innerHTML = "Kosong";
else
document.getElementById("txtAtas").innerHTML = queue[hasil - 1];
}
</script>
</head>
<body>
<form>
<p><input type=text name =textSimpan>
<input type=button value="Masukkan ke Queue" onClick='Enqueue(textSimpan.value);textSimpan.value="";
TampilkanQueue(mediaList);'></p>
<p>Data Genap<br>
<select name="mediaList" size="12">
<option>Tampilkan data...........</select></p>
<p>Data Ganjil<br>
<select name="mediaList2" size="12">
<option>Tampilkan data.............</select></p>
<p><input type=text name=textAmbil size=20 disabled>
<input type=button value="Ambil dari Queue" onClick='textAmbil.value=Dequeue();TampilkanQueue(mediaList);'>
<input type=button value="Hapus" onClick='HapusData();
TampilkanQueue(mediaList);'><br>
<label>Banyak Data :</label><label id="txtBanyak"></label><br>
<label>Data Antrian:</label><label id="txtAtas"></label></p>
</form>
</body>
</html>

Cek queue :

Data Genap

Data Ganjil

  

Tidak ada komentar:

Posting Komentar