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
- 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>
Tidak ada komentar:
Posting Komentar