Sabtu, 21 Mei 2011

Penerapan Link List


Okeh brad... Pada kesempatan kali ini ane mau sedikit share tentang link list sebagai lanjutan dari artikel sebelumnya. Kali ini ane mau share tentang 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:
Sebelumnya, buat class baru terlebih dahulu. Pada contoh kali ini nama classnya adalah LinkedList.
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.

3 komentar: