Cara Penerapan Link List : Dalam suatu linear list kita dapat melakukan operasi penyisipan atau penghapusan atas elemen-elemennya pada sembarang posisi. Misalkan ada 1500 item yang merupakan elemen dari suatu linear list.
Jika elemen ke-56 akan kita keluarkan, maka elemen ke-1 s/d elemen ke-55 tidak akan berubah posisinya pada linear list tersebut. Tetapi elemen ke-57 akan menjadi elemen ke-56, elemen ke-58 akan menjadi elemen ke-57 dst. Selanjutnya, jika kita sisipkan satu elemen pada posisi setelah elemen ke-41, maka elemen ke-42 s/d elemen ke-1500 akan berubah posisinya.
Untuk menyatakan keadaan diatas diperlukan suatu konsep yang berbeda dengan konsep sekuensial sebelumnya. Linked list merupakan suatu cara non-sekuensial yang digunakan untuk merepresentasikan suatu data.
Jika elemen ke-56 akan kita keluarkan, maka elemen ke-1 s/d elemen ke-55 tidak akan berubah posisinya pada linear list tersebut. Tetapi elemen ke-57 akan menjadi elemen ke-56, elemen ke-58 akan menjadi elemen ke-57 dst. Selanjutnya, jika kita sisipkan satu elemen pada posisi setelah elemen ke-41, maka elemen ke-42 s/d elemen ke-1500 akan berubah posisinya.
Untuk menyatakan keadaan diatas diperlukan suatu konsep yang berbeda dengan konsep sekuensial sebelumnya. Linked list merupakan suatu cara non-sekuensial yang digunakan untuk merepresentasikan suatu data.
CARA PENERAPAN LINK LIST
Penerapan link list dalam hal yang lebih luas yaitu penerapan link list dalam mencari data terkecil, terbesar, dan mengurutkan data yang berupa angka. Berikut script untuk mencari data terkecil:
public class LinkedList {
int data;
LinkedList next;
public LinkedList(){
}
public LinkedList(int data){
this.data = data;
}
public void tampil(){
System.out.print(data + " ");
}
}
Setelah itu buat class baru lagi. Pada contoh kali ini adalah Process.
public class Process {
LinkedList awal;
int k = 0;
public void masuk(int data) {
LinkedList link = new LinkedList(data);
link.next = awal;
awal = link;
}
public void tampil() {
LinkedList link = awal;
while (link != null) {
link.tampil();
link = link.next;
}
}
public int min(){
LinkedList link = awal;
while(link != null){
link = link.next;
int n = 1;
k += n;
}
int data[] = new int[k];
for(int x = 0; x < data.length; x++){
data[x] = awal.data;
awal = awal.next;
}
boolean is = true;
int tampung = 0;
for(int x = 0; x < data.length; x++){
is = true;
for(int y = 0; y < data.length; y++){
if(data[x] > data[y]){
is = false;
}
}
if(is){
tampung = data[x];
}
}
return tampung;
}
}
public int max(){
System.out.println("Bilangan terbesar");
LinkedList link = awal;
while(link != null){
link = link.next;
int n = 1;
k += n;
}
int data[] = new int[k];
for(int x = 0; x < data.length; x++){
data[x] = awal.data;
awal = awal.next;
}
boolean is = true;
int tampung = 0;
for(int x = 0; x < data.length; x++){
is = true;
for(int y = 0; y < data.length; y++){
if(data[x] < data[y]){
is = false;
}
}
if(is){
tampung = data[x];
}
}
return tampung;
}
Perhatikan pada blok yang berwarna merah, di dalamnya terdapat satu baris yang di tulis dengan huruf tebal dan berwarna hitam. Blok itu adalah blok yang digunakan untuk mencari data angka terkecil, apabila ingin mencari data angka terbesar, hanya tinggal mengganti dengan if(data[x] < data[y]).
public int max(){
LinkedList link = awal;
while(link != null){
link = link.next;
int n = 1;
k += n;
}
int data[] = new int[k];
for(int x = 0; x < data.length; x++){
data[x] = awal.data;
awal = awal.next;
}
boolean is = true;
int tampung = 0;
for(int x = 0; x < data.length; x++){
is = true;
for(int y = 0; y < data.length; y++){
if(data[x] < data[y]){
is = false;
}
}
if(is){
tampung = data[x];
}
}
return tampung;
}
}
public int max(){
System.out.println("Bilangan terbesar");
LinkedList link = awal;
while(link != null){
link = link.next;
int n = 1;
k += n;
}
int data[] = new int[k];
for(int x = 0; x < data.length; x++){
data[x] = awal.data;
awal = awal.next;
}
boolean is = true;
int tampung = 0;
for(int x = 0; x < data.length; x++){
is = true;
for(int y = 0; y < data.length; y++){
if(data[x] < data[y]){
is = false;
}
}
if(is){
tampung = data[x];
}
}
return tampung;
}
Nah, sekarang bagaimana untuk mengurutkan data menggunakan link list??? Pada contoh kali ini, data yang akan diurutkan akan ditampilkan yaitu fungsi berupa void. Kalo temen – temen ingin mengembalikan nilai dari data yang temen – temen urutkan, silahkan dimodifikasi sendiri. Silahkan tambahkan script mengurutkan data dengan fungsi tampil() yang ada di class process. Berikut scriptnya:
public void tampil() {
LinkedList link = awal;
while (link != null) {
int n = 1;
link.tampil();
link = link.next;
k += n;
}
System.out.println("\nAscending");
int data[] = new int[k];
for(int x = 0; x < data.length; x++){
data[x] = awal.data;
awal = awal.next;
}
int temp;
for(int x = 0; x < data.length;x++){
for(int y = x + 1; y < data.length; y++){
if(data[x] > data[y]){
temp = data[x];
data[x] = data[y];
data[y] = temp;
}
}
System.out.print(data[x] + " ");
}
System.out.println("\nDescending");
for(int x = 0; x < data.length;x++){
for(int y = x + 1; y < data.length; y++){
if(data[x] < data[y]){
temp = data[x];
data[x] = data[y];
data[y] = temp;
}
}
System.out.print(data[x] + " ");
}
}
Lalu buat class baru untuk menampilkan data – data yang ingin dimasukkan. Pada contoh kali ini nama classnya adalah Main.
public class Main {
public static void main(String[] args){
Process angky = new Process();
angky.masuk(4);
angky.masuk(8);
angky.masuk(3);
angky.masuk(1);
angky.masuk(2);
System.out.print(angky.min());
System.out.println("");
Process cahaya = new Process();
cahaya.masuk(4);
cahaya.masuk(8);
cahaya.masuk(3);
cahaya.masuk(1);
cahaya.masuk(2);
System.out.print(cahaya.max());
System.out.println("");
Process putra = new Process();
putra.masuk(4);
putra.masuk(8);
putra.masuk(3);
putra.masuk(1);
putra.masuk(2);
putra.tampil();
}
}
PENTING!!!
Tabulasi dalam java sangatlah penting, apabila temen – temen mengcopas script di atas, pasti nantinya tabulasi di atas akan lurus rata kiri. Solusinya (khusus yang menggunakan netbeans) yaitu setelah temen – temen mengcopas script di atas, tekan Shift + Alt + F. Secara otomatis netbeans akan mengatur tabulasi script yang tentu saja akan memudahkan pembacaan script.
sumber : http://hidupitupenuharti.blogspot.com