Rabu, 02 Mei 2018



STRUKTUR DATA – TREE.

Apa itu TREE ..?
Tree adalah salah satu bentuk struktur data tidak linier yang menggambarkan hubungan yang menggambarkan hubungan yang bersifat hirarkis (hubungan one to many) antara elemen – elemen. Tree bisa didefinisikan sebagai kumpulan simpul/node.
Ada 2 macam tree , yaitu Tree Statik dan Tree Dinamik.
1.       Tree Statik
Adalah isi node nya tetap karena bentuk pohonnya sudahdi tentukan.

2.       Tree Dinamik
Adalah isi node nya berubah ubah karena proses penambahan dan penghapusan.

Contoh penggunaan Tree :
a.       Silsilah Keluarga.
b.       Parse Tree (pada kompiler)
c.       Struktur File
d.       Pertandingan

Contoh TREE :




Istilah dalam TREE.
   1.       Predesesor = Node yang berada diatas node tertentu.
(contoh :  B predesesor dari B dan C).
   
   2.       Succesor = Node yang berada dibawah node tertentu.
c                       contoh :  B dan C merupakan succesor dari A).

    3.       Ancestor = Seluruh node yang terletak sebelum node tertentu dan terletak pada jalur yang sama.                           (contoh :  D merupakan Ancestor dari C dan A).

    4.       Parent = Predesesor satu level diatas satu node
                      (contoh : C merupakan parent dari D,E,F).

    5.       Child = Succesor satu level dibawah satu node
                    (contoh : C merupakan child dari D,E,F)

    6.       Sibling = Node yang memiliki parent yang sama
                       (contoh :D,E,F merupakan Sibling)

    7.       Subtree = Bagian dari tree yang berupa suatu node beserta descendant-nya
                        (contoh : Subtree B, E, F dan Subtree  D, G, H)

    8.       Size = Banyaknya node dalam suatu tree
                   (contoh : gambar tree diatas memiliki size = 10)

    9.       Height = Banyaknya tingkat/level dalam suatu tree
                (contoh : gambar tree diatas memiliki height = 4)

    10.   Root (Akar) = Node khusus dalam tree yang tidak memiliki predesesor
                        (Contoh : A)

    11.   Leaf (Daun) = Node-node dalam tree yang tidak memiliki daun
                        (contoh : D,I,J,F,G,H)

    12.   Degree (Derajat) = Banyaknya child yang dimiliki oleh suatu node

                                (contoh : Node B memiliki derajat 2, node C memiliki derajat 3)





Penulisan Tree dalam Array :
-          Index ke-0 merupakan Root
-          Cara mencari indeks dari Left Child adalah

 

 Keterangan : P adalah Indeks atau Parent.


-          Cara mencari indeks dari Right Child adalah

 
Keterangan : P adalah Indeks atau Parent.



Contoh mengubah Tree ke dalam bentuk Array.





LEFT CHILD (2P + 1)                                                                         RIGHT CHILD (2P + 2)
B = 2P + 1                                                                                            C = 2P + 2
    = 2(0) + 1                                                                                             = 2(0) + 2
    = 1 (terletak di Indeks 1)                                                                      = 2 (terletak di Indeks 2)

D = 2P + 1                                                                                             F = 2P + 2
    = 2(1) + 1                                                                                              = 2(2) + 2
    = 3 (terletak di Indeks 3)                                                                       = 6 (terletak di Indeks 6)

E = 2P + 1                                                                                               I = 2P + 2
   = 2(2) + 1                                                                                               = 2(5) + 2
   = 5 (terletak di Indeks 5)                                                                        = 12 (terletak di Indeks 12)

G = 2P + 1                                                                                               J = 2P + 2
   = 2(3) + 1                                                                                                = 2(6) + 2
   = 7 (terletak di Indeks 7)                                                                         = 14 (terletak di Indeks 14)

H = 2P + 1                                                                                                K = 2P + 2
    = 2(5) + 1                                                                                                 = 2(11) + 2
    = 11 (terletak di Indeks 11)                                                                      = 24 (terletak di Indeks 24)

Hasil :




Demikian penjelasan tentang TREE ya guyss !!!

Semoga bermanfaat J J


Selasa, 24 April 2018


GRAPH

Graph adalah kumpulan dari simpul dan busur.

Secara sistematis graph dinyatakan sebagai :
                        G = (V,E)
Keterangan :
            G = Graph
            V = Simpul/Vertex/Node/Titik
            E = Busur

Dari contoh graph di atas diketahui :
V (simpul) = terdiri dari A, B, C, D dan E
E (busur) = terdiri dari e1, e2, e3, e4, e5 dan e6

Ada 3 macam, graph yaitu :
1.      Graph Tidak Berarah
2.      Graph Berarah
3.      Graph Berbobot

1.      Graph Tidak Berarah (Undirected Graph atau Non-Directed Graph )
Contoh :


2.      Graph Berarah (Directed Graph)
      Contoh : AB tidak sama dengan BA , karena AB terletak dibusur e1 sedangkan BA terletak di busur e7.



3.      Graph Berbobot (Weighted Graph)
Ada 2 macam Graph Berbobot , yaitu : graph Berbobot Berarah dan Tidak Berarah.
a)    Graph Berbobot Berarah



Diketahui :

BD berbobot 9
AB berbobot 10

b)    Graph Berbobot Tidak Berarah




Diketahui :
BD = DB berbobot 5
AC = CA berbobot 3

Macam – macam istilah pada Graph :
1.    Incident.
     


Dari gambar diatas diketahui X dan W terletak pada Incident a. Maka “a” disebut Incident.

2.    Degree
Adalah jumlah busur.



Ada 2 macam Degree , yaitu : Indegree dan Outdegree.
a.    Indegree.
Adalah jumlah busur yang masuk ke simpul itu.
                      


b.    Outdegree.
Adalah jumlah busur yang keluar dari simpul.
                     


3.    Adjacent.
Ada 2 macam Adjacent , yaitu : Adjacent Berarah dan Adjacent Tidak berarah.

a.    Adjacent Berarah.
     


b.    Adjacent Tidak Berarah.



4.    Succesor dan Prodesesor.
     


Diketahui yang mana X adalah “Prodesesor” , dan Y adalah “Succesor”.


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