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
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
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
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 Random
itulah penjelasan yang saya sampaikan ,semoga bermanfaat 😊, Wassalamualaikum wr.wb
No comments:
Post a Comment