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
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 stack" onClick='PushData(textSimpan.value);textSimpan.value=""; | |
TampilkanStack(mediaList);'></p> | |
<p>Data di dalam stack:<br/> | |
<select name="mediaList" size="12"> | |
<option>Tampilkan 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>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="text" id="txtbox" placeholder="Enter String" /> | |
<input type="button" onclick="myFunction()" value="Check Palindrome" /> | |
</form> | |
</font> | |
</body> | |
</html>
Data di dalam stack:
Find The Polindrome here |
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 : |
Tidak ada komentar:
Posting Komentar