Linkded List

Linked list (Daftar bertaut) adalah salah satu struktur data dasar yang menggambarkan sekumpulan data yang saling terkait dengan ditandai adanya Head sebagai Kepala dari List, Pointer sebagai Penghubung antar Node, serta Tail sebagai ujung dari List. Linked mirip dangan array, kecuali pada linked list data yang ingin disimpan dapat dialokasikan secara dinamis pada saat pengoperasian program (run-time).


Aplikasi Map Javascript dengan Algoritma Dijkstra

<!-- 
Pengaplikasian Algoritma Dijkstra di Map
dijkstra algorith by fnfcreator
map from maps.google.com
gui by magrumadha
-->
<html>
<head>
<title>Peta Dijkstra Kecamatan Teluk Jambe Barat dan Timur</title>

</head>
<body>
<p align="center">
  <font size=4 color="blue">Pemetaan Kantor Desa di Kecamatan Teluk Jambe Barat dan Timur</font></p>

<canvas id="mycanvas" width="1443" height="1482"  style="border:8px solid violet;">
</canvas>

<form>
<p align="center">
 <font>Dari </font>
  <select name="dari">
   <option value="0">0 - Karangligar</option>
   <option value="1">1 - Karangmulya</option>
   <option value="2">2 - Margakaya</option>
   <option value="3">3 - Margamulya</option>
   <option value="4">4 - Mekarmulya</option>
   <option value="5">5 - Mulyajaya</option>
   <option value="6">6 - Parungsari</option>
   <option value="7">7 - Wanajaya</option>
   <option value="8">8 - Wanakerta</option>
   <option value="9">9 - Wanasari</option>
   <option value="10">10 - Pinanyungan</option>
   <option value="11">11 - Purwadana</option>
   <option value="12">12 - Puseurjaya</option>
   <option value="13">13 - Sirnabaya</option>
   <option value="14">14 - Sukaharja</option>
   <option value="15">15 - Sukaluyu</option>
   <option value="16">16 - Sukamakmur</option>
   <option value="17">17 - Telukjambe</option>
   <option value="18">18 - Wadas</option>
 </select>

 <font>Ke </font>
  <select name="ke">
    <option value="0">0 - Karangligar</option>
   <option value="1">1 - Karangmulya</option>
   <option value="2">2 - Margakaya</option>
   <option value="3">3 - Margamulya</option>
   <option value="4">4 - Mekarmulya</option>
   <option value="5">5 - Mulyajaya</option>
   <option value="6">6 - Parungsari</option>
   <option value="7">7 - Wanajaya</option>
   <option value="8">8 - Wanakerta</option>
   <option value="9">9 - Wanasari</option>
   <option value="10">10 - Pinanyungan</option>
   <option value="11">11 - Purwadana</option>
   <option value="12">12 - Puseurjaya</option>
   <option value="13">13 - Sirnabaya</option>
   <option value="14">14 - Sukaharja</option>
   <option value="15">15 - Sukaluyu</option>
   <option value="16">16 - Sukamakmur</option>
   <option value="17">17 - Telukjambe</option>
   <option value="18">18 - Wadas</option>
  </select>
</p>

<p align="center">
 <input type="button" value="Show Shortest Path" onclick ='dijkstra(dari.value, ke.value)'> 
 <input type="button" value="Clear Map" onclick ='initMap()'> 
 <input type="button" value="Show Desa" onclick ='initMap();initDesa();'> 
 <input type="button" value="Show Path" onclick ='initMap();initJalan();initDesa();'> 
 <input id="debug" type="checkbox" value="false"> Aktifkan Debug

</p>
</form>
<iframe src="JavaScript:'content'" style="border:1px; height:700px; width:1400px; align:center"></iframe>
<script type="text/javascript">
 var canvas = document.getElementById('mycanvas');
 var ctx = canvas.getContext('2d');
 NilaiAcuan = 100;
 
   
 // koordinat desa
 var desa = new Array();
 desa[0] = new Array(550,610,"Karangligar");
 desa[1] = new Array(450,580,"Karangmulya");
 desa[2] = new Array(680,825,"Margakaya");
 desa[3] = new Array(560,830,"Margamulya");
 desa[4] = new Array(390,420,"Mekarmulya");
 desa[5] = new Array(220,570,"Mulyajaya");
 desa[6] = new Array(500,400,"Parungsari");
 desa[7] = new Array(300,1270,"Wanajaya");
 desa[8] = new Array(100,1130,"Wanakerta");
 desa[9] = new Array(430,840,"Wanasari");
 desa[10] = new Array(1138,632,"Pinanyungan");
 desa[11] = new Array(730,130,"Purwadana");
 desa[12] = new Array(950,810,"Puseurjaya");
 desa[13] = new Array(1080,790,"Sirnabaya");
 desa[14] = new Array(850,430,"Sukaharja");
 desa[15] = new Array(830,700,"Sukaluyu");
 desa[16] = new Array(595,290,"Sukamakmur");
 desa[17] = new Array(1230,490,"Telukjambe");
 desa[18] = new Array(800,770,"Wadas");
 var radiusdesa = 10;

 //data matriks jarak
 var jarak = new Array(18);
 var x = NilaiAcuan;
 jarak[0] = new Array(0,0.96,x,2.20,x,x,2.32,x,x,3.53,6.63,7.86,x,x,5.62,3.15,5.33,8.37,x);
 jarak[1] = new Array(0.96,0,x,3.03,1.88,3.18,x,x,x,3.32,x,x,x,x,x,x,x,x,x);
 jarak[2] = new Array(x,x,0,1.14,x,x,x,x,x,x,x,x,2.50,x,x,x,x,x,1.74);
 jarak[3] = new Array(2.20,3.03,1.14,0,x,x,x,x,x,1.46,x,x,x,x,x,x,x,x,x);
 jarak[4] = new Array(x,1.88,x,x,0,4.11,2.64,x,x,x,x,x,x,x,x,x,4.13,x,x);
 jarak[5] = new Array(x,3.18,x,x,4.11,0,x,8.54,9.02,4.26,x,x,x,x,x,x,x,x,x);
 jarak[6] = new Array(2.32,x,x,x,2.64,x,0,x,x,x,x,7.14,x,x,3.31,x,1.91,x,x);
 jarak[7] = new Array(x,x,x,x,x,8.54,x,0,2.62,6.02,x,x,x,x,x,x,x,x,x);
 jarak[8] = new Array(x,x,x,x,x,9.02,x,2.62,0,5.17,x,x,x,x,x,x,x,x,x);
 jarak[9] = new Array(3.53,3.32,x,1.46,x,4.53,x,6.02,5.17,0,x,x,x,x,x,x,x,x,x);
 jarak[10] = new Array(6.63,x,x,x,x,x,x,x,x,x,0,x,2.91,3.32,x,3.97,x,3.22,4.17);
 jarak[11] = new Array(7.86,x,x,x,x,x,7.14,x,x,x,x,0,x,x,3.78,x,5.08,x,x);
 jarak[12] = new Array(x,x,2.50,x,x,x,x,x,x,x,2.91,x,0,1.41,x,x,x,x,2.22);
 jarak[13] = new Array(x,x,x,x,x,x,x,x,x,x,3.32,x,1.41,0,x,x,x,4.58,4.04);
 jarak[14] = new Array(5.62,x,x,x,x,x,3.31,x,x,x,x,3.78,x,x,0,x,3.38,5.33,x);
 jarak[15] = new Array(3.15,x,x,x,x,x,x,x,x,x,3.97,x,x,x,x,0,x,5.70,0.94);
 jarak[16] = new Array(5.33,x,x,x,4.13,x,1.91,x,x,x,x,5.08,x,x,3.38,x,0,x,x);
 jarak[17] = new Array(x,x,x,x,x,x,x,x,x,x,3.22,x,x,4.58,5.33,5.70,x,0,x);
 jarak[18] = new Array(x,x,1.72,x,x,x,x,x,x,x,4.17,x,2.22,4.04,x,0.94,x,x,0);

 //data garis jalan antar desa
 var garis = new Array(); 
 for (var i=0; i<desa.length; i++)
  garis[i] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 garis[0][1] = new Array(542,620,520,605,490,605);
 garis[0][3] = new Array(542,620,545,625,533,670,545,725,528,787,530,797,550,830);
 garis[0][6] = new Array(537,552,541,514,533,491,535,447,527,446,521,424,501,419);
 garis[0][9] = new Array(542,620,545,625,533,670,545,725,528,787,530,797,535,806,530,817,531,838,524,845,502,834,496,825,437,820,426,825);
 garis[0][10]= new Array(569,620,605,621,616,615,639,616,695,633,757,657,772,653,783,662,810,664,825,671,840,669,869,647,874,618,891,617,904,599,937,575,944,576,961,555,1028,590,1025,626,1041,639,1100,628);
 garis[0][11]= new Array(537,552,541,514,533,491,535,447,544,443,577,447,615,443,671,450,697,450,713,401,719,389,771,385,777,389,796,387,797,382,805,371,767,338,772,325,772,312,778,308,813,302,810,289,816,272,801,269,762,221,773,204,775,188,786,153); 
 garis[0][14]= new Array(537,552,541,514,533,491,535,447,544,443,577,447,615,443,671,450,697,450,713,401,719,389,771,385,777,389,796,387,797,382,805,371,833,393,819,419,837,432);
 garis[0][15]= new Array(569,620,605,621,616,615,639,616,695,633,757,657,772,653,783,662,810,664,825,671,840,669,832,682);
 garis[0][17]= new Array(569,620,605,621,616,615,639,616,695,633,757,657,772,653,783,662,810,664,825,671,840,669,869,647,874,618,891,617,904,599,937,575,944,576,978,537,1014,519,1003,474,1154,454,1173,455,1255,483,1248,488);
 garis[0][16]= new Array(537,552,541,514,533,491,535,447,544,443,577,447,615,443,671,450,697,450,720,390,659,335);
 garis[1][3] = new Array(490,605,520,605,542,620,545,625,533,670,545,725,528,787,530,797,550,830);
 garis[1][4] = new Array(443,567,431,561,410,558,405,420);
 garis[1][5] = new Array(443,567,431,561,366,549,351,540,351,529,303,510,302,501,283,495,282,489,265,487,261,484,238,483,236,486,238,507,228,548,222,548,220,553,216,555);
 garis[1][9] = new Array(490,605,505,606,500,642,487,650,479,743,475,759,481,795,480,821,437,819,425,825);
 garis[2][3] = new Array(670,832,626,834);
 garis[2][12]= new Array(693,832,745,832,775,838,779,844,817,849,903,819);
 garis[2][18]= new Array(693,832,745,832,775,838,779,844,802,789,813,779);
 garis[3][9] = new Array(548,834,538,836,524,845,502,833,497,826,480,821,439,819,425,825);
 garis[4][5] = new Array(405,420,410,558,366,549,351,540,351,529,303,510,302,501,283,495,282,489,265,487,261,484,238,483,236,486,238,507,228,548,222,548,220,553,216,555);
 garis[4][6] = new Array(447,421,448,365,501,359);
 garis[4][16]= new Array(447,421,448,365,501,359,500,306,560,310);
 garis[5][7] = new Array(211,578,201,610,185,620,168,649,159,686,232,764,229,795,233,806,353,845,376,846,362,856,356,897,343,919,328,925,306,980,287,1065,238,1084,209,1105,185,1225,250,1240,266,1259,280,1262);
 garis[5][8] = new Array(211,578,201,610,185,620,168,649,159,686,232,764,229,795,233,806,353,845,376,846,362,856,356,897,343,919,328,925,306,980,287,1065,238,1084,209,1105,193,1175,165,1173,162,1165);
 garis[5][9] = new Array(211,578,201,610,185,620,168,649,159,686,232,764,229,795,233,806,353,845,376,846);
 garis[6][11]= new Array(501,419,521,424,527,446,535,447,544,443,577,447,615,443,671,450,697,450,713,401,719,389,771,385,777,389,796,387,797,382,805,371,805,371,766,336,772,325,772,312,778,308,813,302,810,289,816,272,801,269,762,221,773,204,775,188,786,153);
 garis[6][14]= new Array(501,419,521,424,527,446,535,447,544,443,577,447,615,443,671,450,697,450,713,401,719,389,771,385,777,389,796,387,797,382,805,371,833,393,819,419,837,432);
 garis[6][16]= new Array(500,306,560,310);
 garis[7][8] = new Array(288,1270,277,1260,264,1258,251,1240,185,1224,187,1200,193,1175,165,1172,161,1164);
 garis[7][9] = new Array(288,1270,277,1260,264,1258,251,1240,185,1224,208,1107,240,1082,284,1064,308,975,329,924,343,912,355,896,363,856,376,844);
 garis[8][9] = new Array(163,1165,166,1173,194,1175,208,1107,240,1082,284,1064,308,975,329,924,343,912,355,896,363,856,376,844);
 garis[10][12] = new Array(1101,628,1040,641,1034,676,1036,669,1033,711,1027,718,1022,738,1023,747,1013,774,1009,773,961,786);
 garis[10][13] = new Array(1101,628,1040,641,1034,676,1036,669,1033,711,1027,718,1022,738,1023,747,1013,774,1045,791);
 garis[10][15] = new Array(1101,628,1040,641,1024,627,1026,591,963,555,904,599,891,617,874,618,869,647,840,669,825,671,832,682);
 garis[10][17] = new Array(1171,639,1212,683,1227,661,1240,607,1253,566,1278,524,1235,500);
 garis[10][18] = new Array(1101,628,1040,641,1034,676,1035,696,1014,688,981,692,955,700,927,700,914,707,845,792,814,777);
 garis[11][14] = new Array(786,153,775,188,773,204,762,221,801,269,816,272,810,289,813,302,778,308,772,312,772,325,766,336,805,371,833,393,819,419,837,432);
 garis[11][16] = new Array(786,153,775,188,773,204,762,221,801,269,816,272,810,289,813,302,778,308,772,312,772,325,766,336,806,372,797,383,778,389,772,385,719,389,663,336);
 garis[12][13] = new Array(961,786,1010,772,1045,791);
 garis[12][18] = new Array(817,849,781,842,804,787,814,778);
 garis[13][17] = new Array(1179,803,1210,799,1227,754,1212,683,1227,661,1240,607,1253,566,1278,524,1235,500);
 garis[13][18] = new Array(1046,793,1015,774,1024,746,1021,739,1026,719,1039,700,1014,688,981,692,955,700,927,700,914,707,845,792,814,777);
 garis[14][16] = new Array(836,433,814,416,830,390,805,373,797,381,798,389,778,389,770,384,720,389,655,333);
 garis[14][17] = new Array(939,439,931,401,933,362,928,341,970,333,1006,304,1020,304,1143,399,1154,454,1173,455,1255,483,1248,488)
 garis[15][17] = new Array(832,682,825,671,840,669,869,647,874,618,891,617,904,599,937,575,944,576,978,537,1014,519,1003,474,1154,454,1173,455,1255,483,1248,488);
 garis[15][18] = new Array(828,725,818,735,818,777);

 //membuat titik kantor desa
 function drawDesa(x,y, radius, warnaIsi, warnaLingkar, warnaBayang, lebarBayang, huruf, warnaHuruf,Keterangan)
 {
  ctx.beginPath();
  ctx.arc(x, y, radius, 0, 2 * Math.PI, false);
  ctx.fillStyle = warnaIsi;
  ctx.shadowColor=warnaBayang;
  ctx.shadowBlur=lebarBayang;
  ctx.fill();
  ctx.strokeStyle = warnaLingkar;
  ctx.stroke();
  ctx.font="10px Calibri";
  ctx.fillStyle = warnaHuruf;
  ctx.fillText(huruf,x - (radius /2) ,y + (radius/2)); 
  ctx.font="12px Tahoma";
  ctx.fillStyle = warnaHuruf;
  ctx.fillText(Keterangan,x + (radius) + 4,y + (radius/2)); 
 }

 //membuat garis antar desa
 function drawGaris(awal,akhir,color)
 {
  ctx.beginPath();
  if (akhir < awal)
  {
   var temp = akhir;
   akhir = awal;
   awal = temp;
  }
  ctx.moveTo(desa[awal][0],desa[awal][1]);
  for(var i=0; i <= (garis[awal][akhir].length); i+=2)
  {
   ctx.lineTo(garis[awal][akhir][i],garis[awal][akhir][i+1]);
   
  }
  
  ctx.lineTo(desa[akhir][0],desa[akhir][1]);
  
  ctx.strokeStyle = color;
  ctx.stroke();
 }

 //Inisialisasi Peta
 function initDesa()
 {
  ctx.lineWidth =
  1;
  for(var i=0; i<(desa.length); i++)
  {
   drawDesa(desa[i][0],desa[i][1],radiusdesa, "White", "Red","Blue",10,i,"Blue",desa[i][2]);
  }
  
 }
 
 function initJalan()
 {
  ctx.lineWidth = 2;
  for(var i=0; i<(desa.length); i++)
  {
   for(var j=0; j<(desa.length); j++)
   {
    if (garis[i][j] != 0)
    {
     drawGaris(i,j,"green");
    }
   }
  }
 }
 
 function initMap()
 {
  ctx.drawImage(img,0,0);
 }
 
 //Load image untuk peta
 var img=new Image();
 img.onload = function()
 {
  
  initMap();
  initJalan();
  initDesa();
    
 };
 img.src="2.jpg";
 
 
 /*
 //koordinat mouse di canvas 
 canvas.addEventListener('mousedown', function(evt){
        var mousePos = getMousePos(canvas, evt);
        var message = "Mouse position: " + mousePos.x + "," + mousePos.y;
        writeMessage(canvas, message);
    }, false);
 
 function writeMessage(canvas, message)
 {
  var context = canvas.getContext('2d');
  context.clearRect(600, 600, 400, 50);
  context.font = '18pt Calibri';
  context.fillStyle = 'black';
  context.fillText(message, 620, 630);
 }
 
 function getMousePos(canvas, evt)
 {
  // get canvas position
  var obj = canvas;
  var top = 0;
  var left = 0;
  while (obj && obj.tagName != 'BODY') 
  {
   top += obj.offsetTop;
   left += obj.offsetLeft;
   obj = obj.offsetParent;
  }
 
  // return relative mouse position
  var mouseX = evt.clientX - left + window.pageXOffset;
  var mouseY = evt.clientY - top + window.pageYOffset;
  return {
        x: mouseX,
        y: mouseY
  }
 }
 */
 
 
 // ambil data dari matriks jarak
 function bobot(a,b)
 {
  return jarak[a][b];
 }
 
 function dijkstra(Awal,Akhir)
 {
  ctx.clearRect(0,0,canvas.width,canvas.height);
  initMap();
  initJalan();
  initDesa();
  Awal = parseInt(Awal);
  Akhir = parseInt(Akhir);
  JumlahVerteks = jarak.length;
  var Posisi= new Array(JumlahVerteks);
  var Kunjungan = new Array(JumlahVerteks);
  var Sebelum= new Array(JumlahVerteks);
  var TakTerdefinisi = -1;
  var i;
  var Verteks;
  var Berhenti;
  var iframe = document.getElementsByTagName('iframe')[0];
  var debug1 = document.getElementById('debug').checked;
  var doc = iframe.contentWindow.document;
  doc.body.innerHTML = ""; 

  //inisialisasi array;
  for(i=0; i<JumlahVerteks; i++)
  {
   Posisi[i]= NilaiAcuan; //nilai acuan = 10000;
   Sebelum[i]= TakTerdefinisi; //tak terdefinisi = -1;
   Kunjungan[i]= false;
   
  }
  
  Posisi[Awal]=0;
    
  for (Verteks =0; Verteks < JumlahVerteks; Verteks++)
  {
   var JarakTerpendek = NilaiAcuan;
   Berhenti = -1;
   for (i=0; i < JumlahVerteks; i++)
   {
    if (!Kunjungan[i])
    {
     if (Posisi[i] <= JarakTerpendek)
     {
      JarakTerpendek = Posisi[i];
      Berhenti = i;
     }
    }
   }
   Kunjungan[Berhenti] = true;
   for (i=0; i < JumlahVerteks; i++)
   {
    if (!Kunjungan[i])
    {
     var w = bobot(Berhenti, i);
     if (Posisi[Berhenti]+w < Posisi[i])
     {
      Posisi[i] = Posisi[Berhenti] + w;
      Sebelum[i] = Berhenti;
     }
    }
   }
   
     
   
   //for debugging dijkstra
   
   if (debug1)
   {
    
    doc.write("Iterasi ke " + Verteks);
    var n;
    n =Posisi.length;
    doc.write("<table border=1 align=center><tr>");
    for (i=0; i<n; i++)
    { 
     doc.write("<th style='width: 60px;'>" + i +"</th>");
    }
    doc.write("</tr><tr>");
    var fixnum;
    for (i=0; i<n; i++)
    {
     fixnum = Posisi[i].toFixed(2);
     doc.write("<td style='width: 60px;'>" + fixnum +"</td>");
    }
    doc.write("</tr><tr>");
    for (i=0; i<n; i++)
    {
     doc.write("<td style='width: 60px;'>" + Sebelum[i] +"</td>");
    }
    doc.write("</tr><tr>");
    for (i=0; i<n; i++)
    {
     doc.write("<td style='width: 60px;'>" + Kunjungan[i] +"</td>");
    }
    doc.write("</tr></table>");
    doc.write("<br>");
   }
   
  } 
  
  i=Akhir; 
  
  if (Posisi[i] < NilaiAcuan)
  {
   var Lintasan = desa[i][2];
   var Verteks = i;
   var Asal = i;
   ctx.lineWidth = 4;
   doc.write("<table border=1 align=center>");
   doc.write("<th>No</th> <th>Dari</th>");
   doc.write("<th>Ke</th><th>Jarak</th> <br> ");
   while (Verteks>=0)
   { 
     p=
    Verteks = Sebelum[Verteks];
    if (Verteks>=0) 
    {
     Lintasan = desa[Verteks][2] + '->' + Lintasan;
     drawGaris(Verteks,Asal,"Red");
     doc.write("<tr>");
     doc.write("<td>" + Verteks + "</td>");
     doc.write("<td>" + desa[Asal][2] + "</td>");
     doc.write("<td>" + desa[Verteks][2] + "</td>");
     doc.write("<td>" + jarak[Asal][Verteks] + " km </td>");
     doc.write("</tr>");
     Asal = Verteks;
     
    }
    
    
   }
   initDesa();
 
   alert("Jarak :" + Posisi[i]+' km ('+Lintasan+')');
   doc.write("<td colspan=3 rowspan=1>Jarak Total "+ Lintasan + " </td>");
   doc.write("<td>" + Posisi[i] + "  km </td>");
   doc.write("</table>");
   
  }else
  {
   alert("Tidak ada Jalur")
  }
 }
   

</script>
</body>
</html>


Sorting (Buble Sort)

<html>
 <head>
 <script LANGUAGE="JavaScript">
  function Urutkan(form)
  {
   DataKosong = false;
   DataInputan = form.Data.value;
   inputData = DataInputan.split(",");
   for (var i = 0; i < inputData.length; i++)
   {
    inputData[i] = parseInt(inputData[i], 10);
    if (isNaN(inputData[i]))
    {
     DataKosong = true;
     break;
    }
   }
   inputData = bubbleSort(inputData, 0, inputData.length - 1);
   if (DataKosong)
   {
    alert("Silakan Entri Dulu Data, Pisahkan dengan tanda Koma");
    form.Data.focus();
   } else
    form.Hasil.value = DataString(inputData, 0);
  }
  
  function DataString(ArrayData, Angka)
  {
   if ((ArrayData.length - 1) >= Angka)
    return (ArrayData[Angka] + "," + DataString(ArrayData,(Angka + 1)));
   else
    return "";
  }
  
  function bubbleSort(ArrayData, Mulai, MulaiBaru)
  {
   for (var i = MulaiBaru - 1; i >= Mulai; i--)
   {
    for (var j = Mulai; j <= i; j++)
    {
     if (ArrayData[j+1] < ArrayData[j])
     {
      var DataTemporer = ArrayData[j];
      ArrayData[j] = ArrayData[j+1];
      ArrayData[j+1] = DataTemporer;
     }
    }
   }
   return ArrayData;
  }
 </script>
 </head>
 <body>
 <center>
  <form>
   Masukan Deretan Angka, Pisahkan dengan Koma :
   <hr>
   <input type=text name=Data size=30 value="5,6,8,5,12,4,8,4,20">
   <br>
   <br>
   <input type=button value="urutkan" onClick="Urutkan(this.form)">
   <br>
   <br>
   <br>
   Hasil Pengurutan :
   <hr>
   <input type=text name=Hasil size=30>
  </form>
 </center>
 </body>
</html>


Double Linkded List

<html>
 <head>
  <title>Struktur Data Linked List</title> 
 </head>
 <body>
 <script language = "JavaScript">
 <!--
  function DoublyLinkedList()
  {
   this._Kepala = null;
   this._Ekor = null;
   this._Panjang = 0;
  }
  
  DoublyLinkedList.prototype =
  {
   constructor: DoublyLinkedList,
   Tambah: function (data)
   {
    var node = {data: data, next: null, prev: null};
    if (this._Panjang == 0)
    {
     this._Kepala = node;
     this._Ekor = node;
    } else 
    {
     this._Ekor.next = node;
     node.prev = this._Ekor;
     this._Ekor = node;
    }
    this._Panjang++;
   },

   ItemList: function(index)
   {
    if (index > -1 && index < this._Panjang)
    {
     var NodeTanda = this._Kepala,
     i = 0;
     while(i++ < index)
     {
      NodeTanda = NodeTanda.next;
     }
     return NodeTanda.data;
    } else 
    {
     return null;
    }
   },
   
   Buang: function(index)
   {
    if (index > -1 && index < this._Panjang)
    {
     var NodeTanda = this._Kepala,
     i = 0;
     if (index === 0)
     {
      this._Kepala = NodeTanda.next;
      if (!this._Kepala)
      {
       this._Ekor = null;
      } else 
      {
       this._Kepala.prev = null;
      }
     } else if (index === this._Panjang -1)
     {
      NodeTanda = this._Ekor;
      this._Ekor = NodeTanda.prev;
      this._Ekor.next = null;
     } else
     {
      while(i++ < index)
      {
       NodeTanda = NodeTanda.next;
      }
      NodeTanda.prev.next = NodeTanda.next;
     }
     this._Panjang--;
     return NodeTanda.data;
    } else 
    {
     return null;
    }
   }
  }

  var List = new DoublyLinkedList();
  List.Tambah("Teknik Informatika");
  List.Tambah("Teknik Komputer");
  List.Tambah("Komputerisasi Akuntansi");
  List.Tambah("Computer Networking");
  document.write("Isi LinkedList <br>");
  document.write("--------------- <br>");
  for (i=0; i<4; i++)
  {
   document.write(List.ItemList(i) + "<br>") ;
  }
  document.write("--------------- <br>");
  alert("Isi LinkedList Awal =" + List.ItemList(0));
  alert("ItemList 1 pada Linked List diBuang, yaitu = " +List.ItemList(1));
  List.Buang(1);
  document.write("<br>Isi LinkedList Terakhir <br>");
  document.write("--------------- <br>");
  for (i=0; i<4; i++)
  {
   document.write(List.ItemList(i) + "<br>") ;
  }
  document.write("--------------- <br>");
  //--> 
 </script>
 </body>
</html>

Graph (Algoritma Djikstra)

<html>
 <head>
  <title>Dijkstra Algorithms </title>
  <script language="Javascript">
  <!--
   
  //-->
   var NilaiAcuan= 10000;
   var TakTerdefinisi= -1;
   var NamaVerteks = new Array('A','B','C','D','E','F');
   var Matriks= new Array(6);
   var x = NilaiAcuan;
   var header = new Array("A-0","B-1","C-2","D-3","E-4","F-5");
   Matriks[0]=new Array(0,2,3,x,x,x);
   Matriks[1]=new Array(2,0,3,6,x,x);
   Matriks[2]=new Array(3,3,0,3,5,x);
   Matriks[3]=new Array(x,6,3,0,1,3);
   Matriks[4]=new Array(x,x,5,1,0,1);
   Matriks[5]=new Array(x,x,x,3,1,0);
   
   
   
   function Bobot(a,b)
   {   
    return Matriks[a][b];
   }
   
   function Dijkstra(JumlahVerteks,Awal,d)
   {
    
    var Posisi= new Array(JumlahVerteks);
    var i;
    var Kunjungan = new Array(JumlahVerteks);
    var Sebelum= new Array(JumlahVerteks);
    for(i=0; i<JumlahVerteks; i++)
    {
     Posisi[i]= NilaiAcuan;
     Sebelum[i]= TakTerdefinisi;
     Kunjungan[i]= false;
    }
    Posisi[Awal]=0;
    var Verteks;
    
    for (Verteks =0; Verteks < JumlahVerteks; Verteks++)
    {
     var JarakTerpendek = NilaiAcuan;
     Berhenti = -1;
     for (i=0; i < JumlahVerteks; i++)
     {
      if (!Kunjungan[i])
      {
       if (Posisi[i] <= JarakTerpendek)
       {
        JarakTerpendek = Posisi[i];
        Berhenti = i;
       }
      }
     }
     Kunjungan[Berhenti] = true;
     for (i=0; i < JumlahVerteks; i++)
     {
      if (!Kunjungan[i])
      {
       var w = Bobot(Berhenti, i);
       if (Posisi[Berhenti]+w < Posisi[i])
       {
        Posisi[i] = Posisi[Berhenti] + w;
        Sebelum[i] = Berhenti;
       }
      }
     }
     document.write("Iterasi ke " + (Verteks) + "<br>");
     showarray(header);
     showarray(Posisi);
     showarray(Sebelum);
     showarray(Kunjungan);
     document.write("<br>");
     
    } 
    i=d; 
    if (Posisi[i] < NilaiAcuan)
    {
     var Lintasan = NamaVerteks[i];
     var Verteks = i;
     while (Verteks>=0)
     { 
      Verteks = Sebelum[Verteks];
      if (Verteks>=0) 
       Lintasan = NamaVerteks[Verteks] + '->' + Lintasan;
     }
     alert("Jarak :" + Posisi[i]+' ('+Lintasan+')');
    }else
    {
     alert("Tidak ada Jalur")
    }
    
    
   }
   
   function init()
   {
    
    var Awal='<pre>';
    Awal = Awal + 'A--2--B--6--D--3--F'+'<br>';
    Awal = Awal + ' \\    |    /|    / '+'<br>';
    Awal = Awal + '  3   3  3  1   1 '+'<br>';
    Awal = Awal + '   \\  | /   |  / '+'<br>';
    Awal = Awal + '    \\ |/    | / '+'<br>';
    Awal = Awal + '      C--5--E '+'<br>';
    Awal = Awal +'</pre>';
    document.write(Awal.replace(/(\d)+/g, '<font color="red">$1</font>'));
   }
  
   function showarray(x)
   {
    var n = x.length;
    document.write("<table border=1 align=center>");
    for (var i=0; i<n; i++)
    {
     document.write("<th style='width: 60px;'>" + x[i] +"</th>");
    }
    document.write("</table>");
    
   }  
   
   init();
   
   var Dari=1; // A
   var Ke =4; // F
  
   Dijkstra(Matriks.length,Dari,Ke);
  </script>
  
 </head>
 <body>
  
 </body>
</htmL>


[Praktek] Antrian 2

Konsep antrian hampir sama dengan stack / tumpukan. Perbedaannya hanya pada fungsi pengambilannya.
Dimana stack mengambil data yang terakhir kali dimasukan sedangkan antrian / queue mengambil data yang pertama kali dimasukan.
Program ini tidak jauh berbeda dengan program stack sebelumnya. Hanya ada perbedaan fungsi-fungsi untuk memasukan dan mengambil data yaitu push, shift, unshift, dan pop.

Antrian /Queue

Antrian (Queue) adalah merupakan sekumpulan data terstruktur yang diolah dengan prinsif Pengolahan Data FIFO (First In First Out). Struktur data ini mirip stack yang  memperbolehkan penyisipan di belakang (rear) dan penghapusan elemen di depan (front). Contoh :
  • Penjualan karcis kereta, bioskop
  • Penjadualan pencetakan (spooling system)
  • Penjadualan pemakaian CPU
  • Pemakaian I/O pada sistem komputer
  • Penyimpan barang di Apotek

[Praktek] Tumpukan / Stack 2

Bila sebelumnya dalam program stack, data diinput dari program, maka sekarang data diinput oleh user melalui textbox dan stack divisualisasikan oleh listbox.

Berikut ini adalah programnya.


[Praktek] Tumpukan / Stack

Tumpukan (Stack) adalah merupakan sekumpulan data terstruktur yang diolah dengan prinsif Pengolahan Data LIFO (Last In First Out) . Jadi data yang terakhir dimasukkan akan dikeluarkan terlebih dahulu.
Metode penyimpanan Data ke dalam Stack secara Umum dinamakan Push, dan sebaliknya pengambilan data dari Stack dinamakan Pop.

[Praketek] Record Dynamic Pegawai

Setelah sebelumnya record diinput dari program, maka sekarang data akan diinput oleh user sendiri melalui windows prompt. Kali ini akan dibuat data pegawai yang terdiri dari fields nama, gaji per jam, jam kerja dan gaji dan akan menghitung nilai gaji yang berasal dari input gaji per jam dan jam kerja.

Cara Memasang Widget Statistik di Blog

Widget Statistik dari Blogger ini hanya menampilkan informasi total halaman yang sudah dikunjungi oleh pengunjung blog. Bila ingin mengetahui lebih rinci lagi mengenai data statistik blog, Anda dapat melihatnya di menu Statistik. Jika Anda tertarik untuk memasang widget statistik ini di blog, silakan anda mengikuti langkah-langkah berikut ini.

Record di Javasript

Record merupakan struktural data yang mengandung sekumpulan data atau fields yang
berbeda jenis atau tipenya, dan deklarasi Type Record dapat dilakukan oleh user sendiri
Sebuah record biasanya mempunyai properti dan method.


Program membuat tabel mahasiswa dengan record. Inputan data dari program.

[Praktek] Analisis Deret Fibbonaci dengan array

Deret Fibonacci pertama kali dikemukakan oleh Leonardo of Pisa (kurang lebih tahun 1170 – 1250 M), kemudian Leonardo of Pisa juga dikenal dengan nama Leonardo Pisano, Leonardo Bonacci atau Leonardo Fibonacci.
Berikut ini adalah contoh deret fibonacci


Array di Javascript

Array Adalah Sekumpulan data atau Struktur data yang mempuya tipe data yang sama dan diakses berdasarkan Indeks. Hampir di setiap bahasa pemrograman disediakan fasilitas untuk mendeklarasikan dan mengolah struktur Data Array.
Jenis-jenis array berdasarkan Sifatnya :
1. Array Statis
2. Array Dinamis
Jenis-jenis array berdasarkan dimensi ruang-nya :
1. Array 1 Dimensi
2. Array 2 Dimensi
3. Array 3 Dimensi

[Praktek] Membuat fungsi di Javasript

Praktek kali ini adalah untuk membuat fungsi di dalam javascript.
Fungsi yang ada di script ini adalah untuk
1. Fungsi perkalian 3 bilangan (a, b, c)
2. Fungsi pembagian 2 bilangan (a, b)
3. Fungsi mencari keliling lingkaran

[Praktek] Konversi Bilangan di Javascript

Praktek kali ini adalah untuk mengkonversikan bilangan dari integer ke bilangan berbasis seperti biner, oktal dan heksadesimal.

Berikut adalah programnya


<HTML>
<HEAD>
<TITLE>Konversi Antar Sistem Bilangan</TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE = "JavaScript">
<!--
var bil = new Number(25);
document.write("Bilangan Desimal: " + "<br>" );
document.write("<HR>");
document.write("Biner : " + bil.toString(2) + "<BR>");
document.write("Basis 3 : " + bil.toString(3) + "<BR>");
document.write("Oktal : " + bil.toString(8) + "<BR>");
document.write("Heksa : " + bil.toString(16) + "<BR>");
//-->
</SCRIPT>
</BODY>
</HTML>


Penjelasan
document.write("Basis 3 : " + bil.toString(3) + "<BR>");;

Fungsi bil.toString(x) adalah konversi integer ke string dengan prinsip basis bilangan. nilai x berapa bisa kita isikan berapa saja tergantung dari basis bilangan yang akan digunakan.


Hasil


[Praktek] Menambahkan dan mengalikan 2 buah bilangan

Praktek kali ini adalah untuk menambahkan dan mengalikan 2 buah bilangan bulat integer.

Berikut adalah programnya


<HTML>
<HEAD>
<TITLE>Type Bilangan</TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE = "JavaScript">
<!--
var a = 15;
b = 14;
tambah = a + b;
kali= a * b;
document.write("Penambahan (" +a+ " + " +b+ ") = " + tambah);
document.write("<BR>");
document.write("Perkalian (" +a+ " x " +b+ ") = " + kali );
document.write("<BR>");
//-->
</SCRIPT>
</BODY>
</HTML>


Penjelasan
document.write("Penambahan (" +a+ " + " +b+ ") = " + tambah);

Fungsi document.write adalah untuk menulis tampilan di area browser.

Program di atas adalah program perkalian dan pembagian sederhana.
Hasil perkalian dan pembagian di simpan di dalam sebuah variabel dan kemudian oleh javascript ditampilkan hasilnya melalui fungsi document.write


Hasil



Lihat langsung di sini

Apa itu Struktur Data

Apa itu Struktur Data

Dalam istilah ilmu komputer, sebuah struktur data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien.




atau ada juga yang menyebut model logika/matematik yang secara khusus mengorganisasi data.

Beberapa Contoh Struktur Data adalah :
  1. Array / Larik
  2. Record / Rekaman / Struct / Struktur
  3. Stack / Tumpukan
  4. Queque / Antrian dan Dequeque
  5. List / Susunan
  6. Graph (Graphis)
  7. Tree (Pohon)
Semua bahasa pemograman menpunyai struktur data.
Salah satunya yaitu Javascript, yaitu suatu Script yang dikembangkan dari C++ dan jalan pada sisi Client apabila dikaitkan dengan pengembangan WEB, dan selanjutnya dapat dapat dipadukan dengan XMLHttpRequest untuk berinteraksi dengan Server secara Asyncronous (bermain dibelakang layar), yang lebih dikenal dengan AJAX (Asyncronous JavaScript And XML). Sebagai contoh adalah ketika adanya notification di facebook tanpa kita harus mereload halaman tersebut.

Sebelum memulai belajar struktur data ada baiknya kita mengenal tipe data yang biasa digunakan, khusunya di Javascript
Secara umum, tipe data dapat dikelompokkan sebagai berikut:

1. Numeric (Bilangan)
    Dibagi kedalam 2 kelompok besar, yaitu
    a.  Integer (bilangan bulat)
    b.  Real (bilangan pecahan).
         Untuk Bilangan Bulat dikenal dengan basis bilangan
        a.  Biner
        b.  Oktal
        c.  Desimal   
        d.  Hexadesimal
            sedangkan Bilangan Pecahan biasanya menggunakan simbol Eksponen         (“e”/”E”), sontoh : 1,2 x 103 = 1.2E + 03
      2. String (Gabungan kata)
          Dibagi kedalam 2 kelompok besar, yaitu

          a. Char / Karakter
          b. String / Text / Varchar / Alphanumeric
           dalam JavaScript ditulis diantara tanda Petik Ganda.
           Beberapa Karakter khusus dalam JS :
              a.  \a:Membangkitkan suara (speaker komputer)
              b.  \b:Menggeser kursor kekiri
              c   \n:Pindah baris

        4.  Boolean (Logika)
             Tipe data yang terdiri dari 2 kondisi, benar (true) dan salah (false)

        5.  Date/Time
             Tipe data ini adalah tipe data waktu

        6.  Tipe Data Bentukan
             Tipe data yang berasal dari diturunkannya tipe data primitif (Bilangan, String dan Boolean), contohnya yaitu :
              a.  Array
              b.  Record


        Selain itu , untuk Memanipulasi data diperlukan Operator, yaitu :

        1. Operator Aritmatik atau matematika
             a. (+)  Penjumlahan
             b. (-)   Pengurangan
             c. (*)  Perkalian  
             d. (/)   Pembagian
             e. (%) Modulus (Sisa hasil bagi)
             f.  div  (Hasil bagi pembulatan)
          2. Operator Logika dan Bitwise
               a.  & And
               b.|  Or
               c. ~ Not
               d. ^ Xor
               e.  << SHL ( Geser Ke Kiri / Shift Left )
               f.   >> SHR ( Geser Ke Kanan / Shift Right)
            3. Operator Pembanding
                 a.  ==   Sama dengan
                 b.  !=    Tidak sama dengan
                 c.  <    Kurang dari
                 d   >    Lebih dari
                 e  >=  Lebih sama dengan
                 f.  <=  Kurang sama dengan

              Tugas 01 Akar Persamaan Kuadrat

              Tugas ini adalah script untuk mencari nilai x (akar kuadrat) dari persamaan kuadrat

              y = ax2 + bx + c

              menggunakan javascript.

              Yang pertama harus dicari adalah determinannya. Karena jika determinannya negatif maka tidak akan dicari hasilnya secara real, tetapi dapat dituliskan dalam bentuk bilangan imaginer.
              Untuk mencari determinan digunakan rumus

              determinan = b2 - 4ac


              Kategori

              Kategori