Blog Tentang Informasi Tutorial Desain Web Dan Info Terkini

STRUKTUR DATA

skip to main | skip to sidebar
pi2tquw

Minggu, 28 Juni 2009
sd
MODUL PRAKTEK
STRUKTUR DATA

Oleh :

Nama : PURYONO
Npm : 43E57006085057

Dosen : Supriyadi,S.T.












TEKNIK INFORMATIKA
TAHUN AJARAN 2008/2009





MODUL PRAKTEK

Tujuan Instruksional Umum:
Agar Mahasiswa dapat mengetahui bagaimana cara penyimpanan, penyusunan, pemrosesan dan pengaturan data di dalam media penyimpanan komputer, serta bagaimana mencari data yang telah direkam sehingga data tersebut dapat dipergunakan secara efisien.
Silabus materi:
1. Tipe Data dan Manipulasinya
2. Struktur Data Array
3. Struktur Data Record (Rekaman) / Stack (Struktur)
4. Struktur Data Stack (Tumpukan)
5. Struktur Data Queue (Antrian) dan Struktur data Queue (Antrian Berprioritas)
6. Struktur Data List (Daftar/Susunan) / Link List
7. Struktur Data Graph (Susunan Grafis)
8. Struktur Data Tree (Susunan Pohon)
9. Sort (Pengurutan data)
10. Searching (Pencarian data)
Dalam Modul ini penulis menggunakan Java Script (Bukan java), yaitu suatu script yang dikembangkan dari C++ dan jalan pada sisi Client apabila dikaitkan dengan pengembangan WEB dan selanjutnya dapat dipadukan dengan XMLHttpRequest untuk berinteraksi dengan server secara Asyncronous (bermain dibelakang layar) yang lebih dikenal dengan AJAX (Asyncronous javaScript And XML).


TIPE DATA
A. Tipe data
Merupakan kelompok data yang membedakan satu denagn yang lainnya, Tipe data umum adalah sebagai berikut:
1. Numeric (Bilangan)
Dibagi dalam 2 Kelompok besar, yaitu Integer (Bilangan bulat) dan real (Bilangan pecahan). Untuk Bilangan Bulat dikenal dengan basis bilangan Biner, Oktal, Desimal dan Hexadesimal, sedangkan Bilangan pecahan biasanaya mengguanakan simbol Eksponen ("e"/"E"), contoh: 1.2 x 10³=1.2 + 03.

2. string (Gabunghan kata)
a. Dalam javaScript ditulis diantara tranda petik ganda
b. Beberapa karakter Khusus dalam JS:
1. \a: Membangkitkan suara (Speaker Komputer)
2. \b: Menggeser kursor ke kiri
3. \n: Pindah baris
3. Boolean (Logika)
Tipe data yang terdiri dari 2 kondisi, benar (True) dan salah (false).
4. Tipe data Bentukan
Tipe data yang berasal dari dari diturunkannya tipe data primitif (Bilangan, String dan Boolean contohnya adalah:
1. Array
2. Record
Untuk Memanipulasi data diperlukan Operator, yaitu:
1. Operator matematika: Penjumlahan (+), Pengurangan (-), Perkalian (*), Pembagian (/), Modulus (%)
2. Operator Binary digit: Dan (&), Atau (l), Atau (^), Negasi (~), Geser Kiri (??) dan Geser kanan (>>)
3. Operator Pembanding: Sama dengan (==), Tidak Sama dengan (!=), Kurang dari (?), Lebih Besar dari (>), kurang dari atau sama dengan (?=) dan Lebih Besar dari atau sama dengan (>=).





Contoh Praktek:

1. Program Menambahkan 2 Bilangan


?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>


2. Program Konversi Antar Bilangan


?html>
?head>
?title>Konversi Antar Sistem Bilangan?/title>
?/head>
?body>
?script language="JavaScript">
?!--
var bil=new Number(25);


document.write("Bilangan Desimal: "+bil+"?BR>");
document.write("?HR>");
document.write("Biner: "+bil.toString(2)+"?BR>");
document.write("Oktal: "+bil.toString(8)+"?BR>");
document.write("Heksa: "+bil.toString(16)+"?BR>");
//-->
?/script>
?/body>
?/html>


3. Membuat Function Untuk Menambahkan Bilangan


?html>
?head>
?title>Membuat Fungsi Matematika Dengan JavaScript?/title>
?/head>
?body>
?script language="JavaScript">
?!--
function jumlah (x, y) {
var hasil = x+y;
return (hasil);
}
var a = parseInt(prompt("Ketikan Bilangan A = \n Ingat Jangan String"));
var b = parseInt(prompt("Ketikan Bilangan B = \n Ingat Jangan String"));
var z = jumlah (a, b);

document.write(z);
document.write("?BR>");
document.write("?HR>");
document.write("Tipe Datanya adalah = " + typeof(z));
//-->
?/script>
?/body>
?/html>












ARRAY

A. Landasan Teori
Array adalah sekumpuan data atau Struktur data yang memiliki tipe dsat yang sama dan diakses berdasarkan Indeks. Hampir disetiap 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 ruangnya:
1. Array 1 Dimensi
2. Array 2 Dimensi
3. Array 3 Dimensi
B. Praktek
B.1 Pendeklarasian Array dalam javaScript
sintaks untuk array 1 dimensi
1. nama_array = new Array (elemen_1, s.d elemen_n)
2. nama_array = (elemen_1, s.d elemen_n)
B.2 Implementasi Dalam Program


?html>
?head>
?title>Belajar Array ?/title>
?/head>
?body>
?script language ="JavaScript">
?!--
var DATA_KU = new Array("Saya","Sedang","Senang");
for(i=0; i?3; i++)
{
document.write(DATA_KU[i] +"?BR>");
}
alert ("Selamat Belajar Struktur Data");
alert ("Semoga Memperoleh Ilmu yang Bermanfaat");
//-->
?/script>
?/body>
?/html>
======================================

?html>
?head>
?title> Parameter Array ?/title>
?/head>
?body>
?script language ="JavaScript">
?!--
var tempat = ([]);
var data = prompt("Ketik Jumlah Maksimum Array :");
for (m=1; m?=data; m++)
{
var bil = prompt("Masukkan Bilangan :")
tempat[m]=bil;
}
for (n=1; n?=data; n++)
{
document.write("Elemen Array ("+n+") = "+tempat[n]+"?BR>");
}
//-->
?/script>
?/body>
?/html>

Array Fibonacci

?html>
?head>?title>Deret Fibonacci?/title>?/head>
?body>
?script language = "javascript">
?!--
function fibonacci(n)
{
var i;
var array_fib = new Array();
array_fib.push(0);
array_fib.push(1);
for (i=0; i?n; i++)
{
array_fib.push(array_fib[0]+array_fib[1]);
array_fib.shift();
}
return array_fib[0];
}
for (i=0; i?=20; i++)
document.write("Fibonacci ("+i+")="+fibonacci(i) +"?br>");
//-->
?/script>
?/body>
?/html>

hasil setelah program dirunning adalah sebagai berikut :
Fibonacci (0)=0
Fibonacci (1)=1
Fibonacci (2)=1
Fibonacci (3)=2
Fibonacci (4)=3
Fibonacci (5)=5
Fibonacci (6)=8
Fibonacci (7)=13
Fibonacci (8)=21
Fibonacci (9)=34
Fibonacci (10)=55
Fibonacci (11)=89
Fibonacci (12)=144
Fibonacci (13)=233
Fibonacci (14)=377
Fibonacci (15)=610
Fibonacci (16)=987
Fibonacci (17)=1597
Fibonacci (18)=2584
Fibonacci (19)=4181
Fibonacci (20)=6765



RECORD

A. Landasan Teori
Record merupakan struktural data yang mengandung sekumpulan data atau fields yang berbeda jenis atau tipenya dan deklarasi Type record dapat dilakukan oleh user sendiri.

B. Praktek

Membuat Rekaman Objek


?html>
?head>
?title> Membuat Rekaman Objek ?/title>
?/head>
?body>
?script language="JavaScript">
?!--
var Record = new Array();
function Mahasiswa (npm, nama, prodi, jenjang) {
// Properti
this.npm = npm;
this.nama = nama;
this.prodi = prodi;
this.jenjang = jenjang;

// Metode

this.LihatRecordMahasiswa = LihatRecordMahasiswa;
}

function LihatRecordMahasiswa() {
document.write("?td>" + this.npm + "?/td>");
document.write("?td>" + this.nama + "?/td>");
document.write("?td>" + this.prodi + "?/td>");
document.write("?td>" + this.jenjang + "?/td>");
}

//mengisi data
Record[0] = new Mahasiswa ("43E001", "Dani", "TI", "SI");
Record[1] = new Mahasiswa ("43E001", "Doni", "TI", "SI");
Record[2] = new Mahasiswa ("43E001", "Dina", "TI", "SI");
Record[3] = new Mahasiswa ("43E001", "Dini", "TI", "SI");

//menampilkan data
document.write("?table border = '1'>");
document.write("?th>NPM?/th> ?th>Nama?/th>");
document.write("?th>Prodi?/th> ?th>Jenjang?/th> ?br>");

for (i=0; i ? Record.length; i++)
{
document.write("?tr>");
Record[i].LihatRecordMahasiswa();
document.write("?/tr>");
}
document.write("?/table> ?br>");

document.write("?table border = '1'>");
document.write("?th>NPM?/th> ?th>Nama?/th>");
document.write("?th>Prodi?/th> ?th>Jenjang?/th> ?br>");

for (i=0; i ? Record.length; i++)
{
document.write("?tr>");
Record[i].npm;
document.write("?/tr>");
}
document.write("?/table>");
//-->

?/script>
?/body>
?/html>

hasilnya sebagai berikut


Program Entri Data Pegawai


?html>
?head>?title>Memanipulasi data pegawai?/title>
?script language = "javascript" type="text/javascript">
?!--
var DBPegawai = new Array();
function pegawai(Fields_NIP,
Fields_Nama,
Fields_Gaji_Per_Jam,
Fields_Jam_Kerja,
Fields_Gaji_Total)
{
this.NIP = Fields_NIP;
this.Nama = Fields_Nama;
this.Gaji_Jam = Fields_Gaji_Per_Jam;
this.Jam_Kerja= Fields_Gaji_Total;
}

function input pegawai()
{
var Nama,Gaji_Per_Jam,Jam_Kerja,Gaji;
while ( NIP = window.prompt("Ketikan NIP (Nomor Induk Karyawan)
\n\n Click 'cancel' untuk Berhenti !!."))
{
Nama = window.prompt("Nama Pegawai :");
Gaji_Per_Jam = parseInt(window.prompt("Gaji Per Jam:"));
Jam_Kerja = parseInt(window.prompt("Jumlah Jam Kerja:"));
Gaji = Gaji_Per_Jam * Jam_Kerja;
DBPegawai[DBPegawai.length] = new Pegawai(NIP,Nama,Gaji_Per_Jam,Jam_Kerja,Gaji);
}
ShowPegawai();
}
function ShowPegawai(){
document.write("?table border='1'>" +
"?tr>" +
"?th>NIP?/th>?th>Nama?/th>?th>Gaji Per Jam?/th>?th>Jam Kerja?/th>"+
"?th>Gaji Total?/th>" +
"?/tr>");

for (i=0; i ? DBPegawai.length; i++) {
document.write ("?tr>" +
" ?td>" + DBPegawai[i].NIP + "?/td>
" ?td>" + DBPegawai[i].Nama+ "?/td>" +
" ?td align='right'>"+ DBPegawai[i].Gaji_Jam + "?/td>" +
" ?td align='right'>"+ DBPegawai[i].Jam_Kerja + "?/td>" +
" ?td align='right'>"+ DBPegawai[i].Gaji_Total + "?/td>" +
" ?/tr>");
}
document.write("?/table>");
}
//-->
?/script>
?/head>
?/body onload ="input Pegawai();">
?/body>
?/html>

Cara Membuat Messages Box dengan Record
?html>
?head>
?title> Membuat Rekaman Objek ?/title>
?/head>
?body>
?script language="JavaScript">
?!--
var Record = new Array();
function Mahasiswa (npm, nama, matkul, nilai_angka, nilai_huruf) {
// Properti
this.npm = npm;
this.nama = nama;
this.matkul = matkul;
this.nilai_angka = nilai_angka;
this.nilai_huruf = nilai_huruf;

// Metode

this.LihatRecordMahasiswa = LihatRecordMahasiswa;
}

function LihatRecordMahasiswa() {
document.write("?td>" + this.npm + "?/td>");
document.write("?td>" + this.nama + "?/td>");
document.write("?td>" + this.matkul + "?/td>");
document.write("?td>" + this.nilai_angka + "?/td>");
document.write("?td>" + this.nilai_huruf + "?/td>");
}

//mengisi data
for (I=1; I?=5; I++)
{
npm=window.prompt("NPM");
nama=window.prompt("Nama");
matkul=window.prompt("Matkul");
nilai_angka=window.prompt("Nilai Angka");

if (nilai_angka ?= 49)
{nilai_huruf = "E";}
else
{
if (nilai_angka ?= 59)
{nilai_huruf = "D";}
else
{
if (nilai_angka ?= 69)
{nilai_huruf = "C";}
else
{
if (nilai_angka ?= 79)
{nilai_huruf = "B";}
else

{nilai_huruf = "A";}

}}}

Record[I] = new Mahasiswa (npm, nama, matkul, nilai_angka, nilai_huruf);

}

//menampilkan data
document.write("?table border = '1'>");
document.write("?th>NPM?/th> ?th>Nama?/th>");
document.write("?th>Matkul?/th> ?th>Nilai Angka?/th> ?th>Nilai Huruf?/th> ?br>");

for (I=1; I ? Record.length; I++)
{
document.write("?tr>");
Record[I].LihatRecordMahasiswa();
document.write("?/tr>");
}
document.write("?/table> ?br>");


//-->

?/script>
?/body>
?/html>

TUMPUKAN (STACK)

A. Landasan Teori
Tumpukan (Stack) adlah sekumpulan data terstruktur yang diolah dengan prinsip Pengolahan Data LIFO (Last In First Out) Metode Penyimpanan Data ke dalam Stack secaraUmum dinamakan Push dan sebaliknya pengambilan data dari stack dinamakan pop
B. Praktek
1. Program Ke 1

?html>
?head>
?title>Contoh Implementasi Push dan Pop pada Stack?/title>
?/head>
?body>
?script type = "text/javascript">
var stack= new Array;
stack.push("A");
stack.push("B");
stack.push("C");
document.write("Stack:"+stack.toString()+"?br>");
var YangDiAmbil=stack.pop();
document.write("Data Yang Diambil:"+YangDiAmbil);
document.write("?br>");
document.write("Isi Stack Terakhir:"+stack.toString());
?/script>
?/body>
?/html>

2. Program Ke 2


?html>
?head>
?title>Struktur Data Stack?/title>
?script language = "JavaScript">
var stack = new Array();
function Input_ke_Stack(data)
{
stack.push(data);
}


function Ambil_dari_Stack()
{
var data_dari_stack = stack.pop();
if (data_dari_stack== undefined)
return "Stack Sudah Kosong";
else
eturn 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;
}
}
?/script>
?/head>
?body>
?form>
?input type=text name=textSimpan>
?input type=button value="Masukkan ke Stack"
onClick='Input_ke_Stack(textSimpan.value); textSimpan.value="";
TampilkanStack(mediaList);'>

?select name="mediaList" size=12>
?option>Tampilan data....
?/select>
?input type=text name=textAmbil size=20>
?input type=button value="Ambil dari Stack"
onClick="textAmbil.value = Ambil_dari_Stack(); TampilkanStack(mediaList);">
?/form>
?/body>
?/html>




ANTRIAN (QUEUE)

A. Landasan Teori
Antrian (Queue) adalh merupakan sekumpulan data terstruktur yang diolah dengan prinsip Pengolahan Data FIFO (First In First Out)

B. Praktek
1. Queue ke 1

?html>
?head>
?title>Program Queue dengan shift dan unshift javascript?/title>
?script language="JavaScript">

function DataQueue()
{
var queue = [];
queue.unshift(1);
queue.unshift(2);

var i=queue.pop();
document.write(i+"?br/>");
queue.unshift(3);
queue.unshift(4);
var i = queue.pop();
document.write(i+"?br/>");
}

?/script>
?/head>

?body>
?form name="FormStrukturData">
?input name="btnQueue" value="Queue" type="button"
onclick="DataQueue();"/>
?/form>
?/body>
?/html>


2. Queue ke 2

?html>
?head>
?title>Struktur Data Queue?/title>
?script language="JavaScript">

var queue = new Array();
function Masuk_Antrian(data)
{
queue.unshift(data);
}

function Keluar_Antrian()
{
var yang_keluar_antrian = queue.pop();
if (queue.length==0)
return "Antrian Sudah Kosong";
else
return yang_keluar_antrian;
}

function Dalam_Antrian(list)
{
list.options.length=0;
for (var i = 0; i?queue.length; i++)
{
var data = new Option(queue[i]);
list.options[list.options.length] = data;
}
}


?/script>
?/head>

?body>
?form>
?input type=text name=textSimpan>
?input type=button value="Masuk Antrian"
onclick='Masuk_Antrian(textSimpan.value);
textSimpan.value="";
Dalam_Antrian(Visualisasi);'>

?select name="Visualisasi" size=12>
?option>Isi Antrian....
?/select>
?input type=text name=textAmbil size=20>
?input type=button value="Keluar Antrian"
onClick="textAmbil.value=Keluar_Antrian();
Dalam_Antrian(Visualisasi);">
?/form>
?/body>
?/html>


SUSUNAN / DAFTAR DATA TERKAIT (LINKED LIST)

A. Landasan Teori

Linked list (Daftar Bertaut) adalah salah satu Struktur data dasar yang menggambarkan sekumpulan data yang saling terkait dengan ditandai dengan adanya Head sebagai kepala dari List, Pointer sebagai penghubung antar Node, serta Tail sebagai ujung dari List. Linked mirip dengan array, kecuali pada Linked list data yang ingin disimpan dapat dialokasikan secara dinamis pada saat pengoperasian program (run-time).
List terdiri dari:
• Head (Kepala)
• Pointer (Penunjuk)
• Tail (Ujung)
Jenis-jenis linked List:
• Linear Linked list (Searah)
• Circular linked List (Searah)
• Single Linked list
• Double Linked List
B. Praktek
1. Deklarasi Awal Pembentukan Linked List:
function Linked List()
{
This._panjang = 0;
This._kepala = null;
}
2. Konstruksi (pembentukan) metode yang akan dimiliki oleh Linked List, yaitu:
• Tambah (untuk menambahkan Item/Node)
• Item (untuk menunjuk Item List berdasarkan Index)
• Buang (untuk membuang elemen linked list)
• Ukuran (menentukan jumlah elemen linked list)
• toArray (mengkonversi Linked list ke dalam susunan Array)
• toString (untuk menghasilkan susunan Array bertipe String
3. Pembentukan Metode dalam linked List dengan Prototype:
Linked List.prototype =
{
Constructor:
LinkedList,
Tambah,
Item,
Buang,
Ukuran,
toString,
toArray;
}
Blok Penulisan Kode:

?html>
?head>
?title>Struktur Data Linked List?/title>
?/head>
?body>
?script language = "JavaScript">
?!--

function LinkedList()
{
this._panjang = 0;
this._kepala = null;
}

LinkedList.prototype =
{
constructor: LinkedList,

//Membuat Metode untuk Menambah Data Kedalam List
Tambah: function (data)
{
//Membuat Node List
var node = {data: data, next: null}, NodeTanda;

//Periksa Isi List
if (this._kepala === null)
{
this._kepala = node;
}
else
{
NodeTanda = this._kepala;
while (NodeTanda.next)
{
NodeTanda = NodeTanda.next;
}
NodeTanda.next = node;
}
this._panjang++
},


//Membuat metode Untuk Menunjuk Item Data
Item: 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;
}
},


//Membuat metode Untuk Membuang Elemen List
Buang: function (index)
{
if (index > -1 && index ? this._panjang)
{
var NodeTanda = this._kepala, previous, i = 0;
if (index === 0)
{
this._kepala = NodeTanda.next;
}
else
{
while (i++ ? index)
{
previous = NodeTanda;
NodeTanda = NodeTanda.next;
}

previous.next =NodeTanda.next;
}
this._panjang--;
return NodeTanda.data;
}
else
{
return null;
}
},


//Membuat metode Untuk Mengetahui Jumlah Elemen List
Ukuran: function()
{
return this._panjang;
},


//Membuat metode Untuk Membentuk Array
toArray: function()
{
var result = [],
NodeTanda = this._kepala;

while (NodeTanda)
{
result.push (NodeTanda.data);
NodeTanda = NodeTanda.next;
}
return result;
},


//Membuat metode Untuk Konversi ke String
toString: function()
{
return this.toArray().toString();
}

}
var list = new LinkedList ();


list.Tambah("Teknik Informatika");
list.Tambah("Teknik Komputer");
list.Tambah("Komputerisasi Akuntansi");
list.Tambah("Komputer Networking");


document.write("Isi Linked List ?br>");
document.write("--------------- ?br>");
for (i=0; i?4; i++)
{
document.write(list.Item(i) + "?br>");
}
document.write("--------------- ?br>");

alert("Isi Linked List Awal =" +list.Item(0));
alert("Item 1 Pada Linked List dibuang, Yaitu =" +list.Item(1));
list.Buang(1);



document.write("Isi Linked List Terakhir ?br>");
document.write("---------------- ?br>");
for (i=0; i?4; i++)
{
document.write(list.Item(i) + "?br>");
}
document.write("---------------- ?br>");

//-->
?/script>
?/body>
?/html>

tambah list ukuran
?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;
}


},

Ukuran: function(){
return this._Panjang;
},

toArray: function(){
var result = [],
NodeTanda = this._Kepala;

while(NodeTanda){
result.push(NodeTanda.data);
NodeTanda = NodeTanda.next;
}

return result;
},

toString: function(){
return this.toArray().toString();
}
}

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>");


document.write("Isi LinkedList Awal =" + List.Ukuran() +"?br>?br>");


alert("ItemList 1 pada Linked List diBuang, yaitu = " + List.ItemList(1));
List.Buang(1);



document.write("Isi Linked LIst Setelah Dibuang ?br>");
document.write("--------------- ?br>");
for (i=0; i?4; i++)
{
document.write(List.ItemList(i) + "?br>") ;
}
document.write("--------------- ?br>");

document.write("?br>Isi LinkedList Terakhir =" + List.Ukuran() +"?br>");
//-->
?/script>
?/body>
?/html>

memanngil list ukuran ,toArray,dan toString
?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;
}


},

Ukuran: function(){
return this._Panjang;
},

toArray: function(){
var result = [],
NodeTanda = this._Kepala;

while(NodeTanda){
result.push(NodeTanda.data);
NodeTanda = NodeTanda.next;
}

return result;
},

toString: function(){
return this.toArray().toString();
}
}

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>");


document.write("Isi LinkedList Awal = " + List.Ukuran() +"?br>");
document.write("Isi Array Awal = " + List.toArray() +"?br>");
document.write("Isi String Awal = " + List.toString() +"?br>?br>");

alert("ItemList 1 pada Linked List diBuang, yaitu = " + List.ItemList(1));
List.Buang(1);


document.write("Isi Linked LIst Setelah Dibuang ?br>");
document.write("--------------- ?br>");
for (i=0; i?4; i++)
{
document.write(List.ItemList(i) + "?br>") ;
}
document.write("--------------- ?br>");

document.write("?br>Isi LinkedList Terakhir = " + List.Ukuran() +"?br>");
document.write("Isi Array Akhir = " + List.toArray() +"?br>");
document.write("Isi String Awal = " + List.toString() +"?br>");
//-->
?/script>
?/body>
?/html>


GRAPH
?html>
?head>?title>jkstra Algorithms?/title>
?script>
?!--
alert ("Taet Dijkstra");
//-->

?/script>
?/head>
?body>
?script language = "javascript">

var NilaiAcuan = 10000
var TakTerdefinisi = -1
var NamaVerteks = new Array('A', 'B', 'C', 'D', 'E', 'F')
var Matriks = new Array(6)

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;
}
}
}
}

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;
{
message("Jarak : " + Posisi[i]+' ('+Lintasan+') '+'?br>');
}
else
{
message("Tidak Ada Jalur")
}
}

function init(){
var x = NilaiAcuan
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)

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>'

message(Awal.replace(/(\d)+/g, '?font color="red">$1?/font>'));
}
init()
var Dari = 0 // A
var Ke = 5 // F
Dijkstra(Matriks.length,Dari,Ke);
//-->
?/script>
?/body>
?/html>

Pengurutan Sort
A. Landasan Teori
Pengurutan (Sorting) adalah proses menyusun kembali data yang sebelumnya telah disusun dengan suatu pola tertentu ataupun masih acak, sehingga tersusun secara teratur menurut aturan dan pola tertentu.


Contoh:
Data Acak : 1, 5, 6, 8, 1, 3, 25, 85
Ascending : 1, 1, 3, 5, 6, 8, 25, 85
Descending : 85, 25, 8, 6, 5, 3, 1, 1


Salah satu metode pengurutan data adalah Bubble Sort, yaitu mengurutkan data dengan
cara membandingkan elemen data sekarang (Acuan) dengan elemen berikutnya.

Pengurutan Ascending: Jika elemen sekarang lebih besar dari elemen berikutnya, maka kedua elemen tersebut ditukar.

Pengurutan Descending: Jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen tersebut ditukar.

Ketika satu proses telah selesai, maka bubble sort akan mengulang proses, demikian seterusnya sampai dengan interaksi sebanyak n-1. Proses Algoritma Bubble Sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah di inginkan.


B. Contoh Program:

?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++)
{
iputData[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>
Masukkan Deretan Angka, Pisahkan Dengan Koma :
?hr>
?br> ?input type=text name=Data size=30 value="5, 6, 8, 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>





































LEMBAR BUKTI PENGESAHAN

Dosen:

Dosen,
Yang mengesahkan:





(Supriyadi,S.T.)




Mahasiswa





(Puryono)
Diposkan oleh PURYONO PANCA RAGIL KUNCORO di 23.04
0 komentar:

Poskan Komentar

Posting Lebih Baru Posting Lama Beranda
Langgan: Poskan Komentar (Atom)
links

* play movie ubuntu

About Me
Foto Saya

PURYONO PANCA RAGIL KUNCORO
hidup itu bagiku adalah sebuah perjuangan yang akan selalu membutuhkan pengorbanan,

Lihat profil lengkapku
Blog Archive

* ► 2010 (1)
o ► November (1)
+ jarkom

* ▼ 2009 (3)
o ▼ Juni (3)
+ sd
+ WAWASAN NUSANTARA (PENDIDIKAN DAN KEWARGANEGARAAN)...
+ WAWASAN NUSANTARA

Provider

Glitterfy.com - Glitter Graphics
Pengikut
Tag : MATA KULIAH
0 Komentar untuk "STRUKTUR DATA"

INFO NEWS UPDATE

loading...
Back To Top