-->
BLANTERWISDOM101

contoh program double linked list java penjelasannya

Saturday, December 30, 2017


berikut adalah contoh program double linked list java penjelasannya

A. PERMASALAHAN
Studi kasus:
Tujuh orang sahabat pergi ke suatu villa kosong untuk menguji nyali. Sebut saja 2, 6, 13, 19, 46, 35, dan 83. Mereka masuk ke villa dalam suatu barisan. Di depan villa, 3 orang di barisan pertama pergi untuk memeriksa ruangan-ruangan yang ada di dalam villa, sehingga hanya terisa 4 orang dalam barisan. Setelah beberapa jam kemudian, tiga orang tersebut tidak ada kabar. Sehingga empat orang yang berada di depan villa memutuskan untuk mencari mereka. Saat berjalan di lorong, tiba-tiba terdengar teriakan yang sangat keras sehingga nomor 46 lari terbirit-birit memisahkan diri dari barisan. Sisa tiga orang lainnya kembali melanjutkan perjalanan mereka dengan saling berpegangan tangan. Selang beberapa waktu sesosok orang sebut saja nomor 100 memegang tangan orang terakhir yang terdapat dalam barisan. Barisan tersebut tiba di ruang makan villa dan bertemu dengan nomor 13 ang sedang ketakutan. Lalu ia masuk ke dalam barisan diantara nomor 35 dan 83. Di ruang makan tersebut terdengar suara orang nomor 2 dan 6 lari terbirit-birit memasuki ruangan. Nomor 2 segera masuk ke barisan di depan nomor 19 sedangkan nomor 6 masuk di belakang nomor 13. Mereka pun sampai di luar villa dan bertemu dengan nomor 46. Si nomor 46 melihat seorang yang tak dikenal ada di dalam barisan, yaitu nomor 100. Dikarenakan ada orang yang tidak dikenal tersebut, mereka pun berpencar dan membuat barisan baru dengan urutan dari besar ke kecil dan nomor genap berada di depan.
Urutkan angka pada studi kasus diatas dengan menggunakan metode insertion sort dari studi kasus diatas.

B. HASIL DAN PEMBAHASAN
1. Algoritma
a. Add front

  1. Membuat node baru.
  2. Menghubungkan node baru dengan head dari linked list.
  3. Menjadikan node baru sebagai head dengan memindahkan posisi head ke node baru.
b. Add back

  1. Membuat node baru.
  2. Menghubungkan node baru dengan node di ujung dari linked list.
  3. Menjadikan node baru sebagai tail dengan membuatnya sama dengan null.
c. Delete front

  1. Memindahkan posisi head ke node selanjutnya.
  2. Memutuskan hubungan head dengan node sebelumnya, dengan menjadikan node sebelumnya sama dengan null .
d. Delete back

  1. Memindahkan data akhir ke data sebelumnya.
  2. Menghapus data akhir.
e. Delete all

  1. Membuat variabel bantu.
  2. Menghapus setiap data yang ditempati oleh variabel bantu tersebut.
f. Delete After

  1. Membuat variabel bantu.
  2. Menentukan posisi node mana yang akan dihapus yang berada setelah node tertentu.
  3. Memutuskan hubungan node tertentu dengan node yang akan dihapus yang berada setelah node tertentu tersebut.
  4. Menghubungkan node tertentu tersebut dengan node setelahnya.
g. Insert After

  1. Membuat node baru.
  2. Menentukan posisi dimana node baru akan disisipkan setelah node tertentu.
  3. Menyisipkan node baru di tempat yang sudah ditentukan dengan menghubungkan node baru dengan node tertentu.
h. Tampil

  1. Mengecek apakah linked list kosong atau tidak.
  2. Jika linked list kosong, memberi keterangan bahwa linked list kosong.
  3. Menampilkan data dari linked list, jika linked list tidak kosong.
  4. Melakukan perulangan untuk menampilkan semua data pada linked list hingga data terakhir.
i. Urut

  1. Membandingkan nilai node awal dengan node selanjutnya.
  2. Jika node selanjutnya lebih besar dari node awal maka node selanjutnya akan bergeser ke kanan hingga node terakhir.
  3. Melakukan perulangan untuk membandingkan semua nilai node pada linked list.
  4. Mengurutkan nilai node dari yang terbesar hingga yang terkecil.
2. Source code
a. kelas node
b. kelas jurnal1


3. Hasil run program

Gambar 2.4 Hasil run program uji nyali

C. ANALISA DATA
class node{
int data;
node prev = null;
node next = null;
node(int data){
this.data = data;
  }
}
Script “class node{“ merupakan pembuatan sebuah kelas “node” yang digunakan untuk menginisialisasi setiap node yang ada . Di dalam kelas tersebut diinisialisasikan “data” dengan tipe data integer yang digunakan untuk menympan sebuah data, “prev” dan “next” diinisialisasikan dengan tipe data “node” sama dengan null atau kosong. “prev” digunakan untuk menghubungkan data ke data sebelumnya dan “next” sebaliknya yaitu menghubungkan data ke node selanjutnya. Lalu membuat sebuah konstruktur dengan parameter yang digunakan untuk menghubunngkan kelas satu dengan kelas yang lain.
class jurnal1{
node head=null;
node tail=null;
Script “class jurnal1{“ merupakan sebuah class bernama “jurnal1” yang berfungsi untuk membuat sebuah kelas baru pada java yang digunakan untuk membuat fungsi-fungsi baru lainnya di dalam kelas tersebut. Script “node head=null; node tail=null;” digunakan untuk menginisialisasi nilai awal dari “head” dan “tail” adalah kosong.
void addfront(int b){
 node baru = new node(b);
 if(head==null){
 head=baru;
 tail=baru;
    }
    else{
 baru.next=head;
 head.prev=head;
 head=baru;}
    }
}
Script “void addfront(int b){“ merupakan sebuah fungsi “addfront” atau fungsi tambah awal, dimana data yang ingin dimasukkan akan berada diurutan paling awal dan memiliki parameter dengan nama variabel adalah “ b” dengan tipe data integer. Script “node baru = new node(b);” digunakan untuk membuat suatu node baru yang nantinya akan digunakan untuk menyimpan data yang baru. Jika “head” atau data awal sama dengan null atau kosong maka “head” dan “tail” atau data awal dan akhir akan sama dengan “baru” atau data baru. Yang berarti bahwa data baru mempunyai 2 buah sumbu atau node yaitu head dan tail.
Lalu jika data awal tidak kosong atau null maka akan dijalankan proses pada script “baru.next=head; head.prev=head;” yang digunakan untuk menghubungkan data baru ke bagian head atau awal.Script “head=baru;” digunakan untuk membuat “baru” sebagai node awal atau head. Sehingga data yang baru dimasukkan akan berada dibagian awal.
Node prev;void addback(int b){
node baru = new node(b);
 if(head==null){
 head=baru;
 tail=baru;
 }
 else{
 baru.prev=tail;
 tail.next=baru;
 tail=baru;
 }
}
Script “void addback(int b){“ merupakan sebuah fungsi “addback” atau fungsi tambah akhir, dimana data yang ingin dimasukkan akan berada diurutan paling akhir dan memiliki parameter dengan nama variabel adalah “b” dengan tipe data integer. Script “node baru = new node(b);” digunakan untuk membuat suatu node baru yang nantinya akan digunakan untuk menyimpan data yang baru. Jika “head” atau data awal sama dengan null atau kosong maka “head” dan “tail” atau data awal dan akhir akan sama dengan “baru” atau data baru. Yang berarti bahwa data baru mempunyai 2 buah sumbu atau node yaitu head dan tail.
Lalu jika data awal tidak kosong atau null maka akan dijalankan proses pada script “baru.prev=tail; tail.next=baru;” yang digunakan untuk menghubungkan data baru ke bagian tail atau akhir.Script “tail=baru;” digunakan untuk membuat “baru” sebagai node akhir atau tail. Sehingga data yang baru dimasukkan akan berada dibagian akhir.
void dellback(){
if(head==null){
System.out.println("List Kosong");
}
else{
tail=tail.prev;
tail.next=null;
}
}
Script “void dellback(){“ merupakan sebuah fungsi “deleteback” atau fungsi menghapus bagian data terakhir, dimana data yang akan dihapus adalah data yang berada diurutan paling akhir. Jika “head” atau data awal sama dengan null atau kosong maka program akan menampilkan “List Kosong”. Lalu jika “head” tidak kosong maka program akan menjalankan proses pada script “tail=tail.prev;” digunakan untuk memindahkan “tail” ke bagaian sebelum data terakhir. Lalu script “tail.next=null;” digunakan untuk menghapus data terakhir dengan mengubahnya menjadi null.
void tampil(){
node tmp=head;
if(head==null){
System.out.println("List Kosong");
}
else{
while(tmp !=null){
System.out.print(tmp.data +" ");
tmp=tmp.next;
}
}
System.out.println();}
Script “void tampil(){“ digunakan untuk menampilkan data-data yang akan ditampilkan. Script “node tmp=head;” digunakan untuk membuat variabel baru dengan nama “tmp” yang berada di head. Script “if(head==null){ System.out.println("List Kosong" );}” digunakan apabila isi data kosong dan program akan menampilkan “List Kosong”. Jika datanya ada maka akan dilakukan proses penambahan data terus-menerus.

class Node{int data;
Node next;
Node prev;
}

Script “void del(int b){“ merupakan sebuah fungsi bernama “del” dengan parameter “int b” yang digunakan untuk menghapus data tertentu pada parameter. Pada fungsi ini digunakan variabel bantu dengan nama “tmp” yang diinisialisasikan sama dengan “head” dan “node after” sama dengan “tmp.next”. Jika “tmp.next” tidak sama dengan “null” maka akan dicari data bernilai “b” sexara berurutan sampai bertemu. Jika sudah bertemu maka akan dihapus.
void del(int b){
node tmp=head;
node after=tmp.next;
if(tmp.next != null){
while(tmp.next.data != b){
tmp=tmp.next;
after=after.next;
}
tmp.next=after.next;
after=null;}
}
Scriptvoid urut(){“ merupakan sebuah fungsi “urut” yang digunakan untuk mengurutkan data-data dengan metode insertion sort/. Lalu digunakan variabel bantu bernama “tmp” dan “t”. Jika
void addafter(int b,int a){
node tmp=head;
node baru = new node(b);
while(tmp.data != a){
tmp=tmp.next;
}
node bantu = tmp.next;
tmp.next=baru;
baru.next=bantu;
baru.prev=tmp;
bantu.prev=baru;
}
Script “void addafter(int b,int a){“ merupakan sebuah fungsi bernama “addafter” dengan dua parameter yaitu “int b” yang digunakan untuk menambahkan data tertentu setelah data yang dimasukkan oleh pengguna.pertama dibuatkan sebuah objek baru dengan nama “baru”. Lalu pada script “while(tmp.data != a){ tmp=tmp.next;}” digunakan untuk mencari data “a” yang nantinya data akan ditambah
Node prev;void dellall(){
head=null;
tail=null;
System.out.println("kosong");
}
Script “void dellall(){“ merupakan sebuah fungsi bernama “dellall” dengan tanpa parameter yang digunakan untuk menghapus semua data. Script “head=null;tail=null” digunakan untuk menghapus semua data dan data tersebut akan menjadi “null” dan akan tampil keluaran “kosong”.

public static void main (String [] args){jurnal1 x= new jurnal1();
System.out.println("Orang-orang uji nyali");
x.addback(2);
x.addback(6);
x.addback(13);
x.addback(19);
x.addback(46);
x.addback(35);
x.addback(83);
x.tampil();
System.out.println("sisa Orang-orang uji nyali");
x.dellfront();
x.dellfront();
x.dellfront();
x.tampil();
System.out.println("sisa Orang-orang uji nyali");
x.del(46);x.tampil();
System.out.println("sisa Orang-orang uji nyali");
x.addback(100);
x.tampil();
System.out.println("sisa Orang-orang uji nyali");
}
}
Script “public static void main (String [] args){“ merupakan sebuah fungsi main yang digunakan untuk memanggil fungsi-fungsi lainnya yang sudah dibuat dan mengurutkannya sesuai permaslahan. Fungsi main juga merupakan fungsi yang akan diproses terlebih dahulu sebelum fungsi lain. Script “jurnal1 x= new jurnal1();” digunakan untuk membuat objek baru yang nantinya akan digunakan untuk memanggil fungsi lain.

D. KESIMPULAN
Berdasarkan praktikum yang telah dilakukan dapat disimpulkan bahwa :

  1. Hal yang paling menonjol dalam pengimplementasiandouble linked list sehingga berbeda dengan single linked list adalah bertambahnya satu pointer baru, yaitu pointer before. Pointer ini membuat pengaksesan node linked list lebih mudah karena bisa dilakukan dari depan dan belakang.
  2. Konsep pengoperasian double linked list sangat dibutuhkan ketelitian dalam membuatnya seperti bagaimana cara mengarahkan, menyambung dan memutus antara node yang satu dengan node yang lain dari belakang maupun dari depan.
Share This :