LAPORAN PRAKTIKUM STRUKTUR DATA Modul 06

30
      LAPORAN PRAKTIKUM
    STRUKTUR DATA
Modul 06









Disusun Oleh :

HERI PURNAMA
125410101
TI 02



UPT LABORATORIUM
Sekolah Tinggi Manajemen Informatika dan Komputer
AKAKOM
Yogyakarta
2013


DOUBLE LINKEDLIST
(SENARAI BERANTAI GANDA)
1).PEMBAHASAN
v  Listing Program
Class simpul

{
      protected

      String nama;
      int    umur;
      simpul kiri;
      simpul kanan;

public

void ngisiSimpul(String NAMA, int UMUR)

     {
             nama = NAMA;
             umur = UMUR;
     }

Void cetakSimpul()

     {
             System.out.print (nama + "-" + umur + " ");
     }

}
Ø  Baris-baris  sintak program diatas adalah Merupakan pendeklarasian class Simpul,yang mana untuk mengakses variabel digunakan keyword protected ,keyword protected  sendiri adalah salah satu komponen deklarasi method yakni modifier.modifier digunakan untuk mengontrol  kelas-kelas lain yang mempunyai akses ke field anggota.Dalam kelas simpul terdapat dua method yakni :
o   Method “ngisiSimpul” mempunyai parameter nama yang bertipe string dan umur yang bertipe integer. Dimana variabel nama  disamakan dengan variabel NAMA, dan variabel umur disamakan dengan variabel UMUR.
o   Method “cetakSimpul” tanpa parameter dengan perintah untuk menampilkan nama + "-"  untuk memanggil variabel nama dan  + umur + " "   untuk memanggil variabel umur.

Class senarai
{
       protected
       simpul awal;
       simpul akhir;

       public
       void inisialisasiSenaraiKosong()
       {
              awal = null;
              akhir = null;
       }

       Int hitungJumlahSimpul()
       {
              int N = 0;
              simpul bantu;
              bantu = awal;
              while (bantu != null)
              {
                     bantu = bantu.kanan;
                     N++;
              }
              return (N);
       }

Ø  Sintak program diatas adalah pendeklarasian kelas senarai, yang mana mempunyai  pendeklarasian variabel simpul awal dan simpul akhir dan menggunakan modifier dengan tipe protected, dimana untuk mengakses variabel digunakan keyword proted.Dalam program diatas terdapat method yakni:
o   Method “inisialisasiSenaraiKosong” tanpa parameter bersifat void, dengan nilai ketetapan nilai awal dan akhir adalah null.
o    Method “hitungJumlahSimpul” tanpa parameter dengan nilai variabel N yang mempunyai nilai bawaan awal adalah 0, dimana N bertipe integer. Method ini juga mendeklarasikan variabel simpul bantu,dimana nilai variabel bantu sama dengan nilai simpul awal. Dalam method ini terdapat juga perulangan yakni perulangan while dimana digunakan untuk perintah perulangan bila variabel bantu tidak sama dengan null, maka variabel bantu menjadi ‘bantu.kanan’ kemudian nilai N bertambah satu. Sehingga melakukan pengembalian terhadap nilai pada variabel N.
       Void tambahDepan(String NAMA, int UMUR)

     {
              System.out.println("tambahdepan '" +NAMA+ "' dilakukan..");
            simpulbaru = new simpul();
            baru.ngisiSimpul(NAMA, UMUR);

if (awal == null) //***jikasenaraimasihkosong***\\\

          {
                     awal       = baru;
                  akhir      = baru;
                  baru.kiri  = null;
                  baru.kanan = null;
          }

else          //***jikasenaraitidakkosong***\\
          {
                     baru.kanan = awal;
                awal.kiri  =baru;
                awal       = baru;
                awal.kiri=null;
          }

     }
Ø  Perintah Method “tambahDepan”  mempunyai parameter NAMA bertipe String dan UMUR bertipe integer. Terdapat juga perintah untuk menampilkan teks “tambah depan ” yang diambil dari variabel NAMA dan kelanjutan teksnya adalah “dilakukan . . .” method ini juga melakukan penciptaan sebuah object simpul baru = new simpul(); dimana objek baru.ngisiSimpul diambil dari nilai  variabel NAMA, dan UMUR. Sehingga terwujud suatu kondisi :
o   saat nilai senarai masih kosong maka nilai awal = null maka nilai variabel awal sama dengan nilai  baru dan akhir sama dengan nilai baru, sehingga nilia variabel baru.kanan  akan sama dengan null dan nilai variabel baru.kiri juga akan sama dengan null atau dengan kata lain akan ditujukkan ke null.
o   Bila kondisi  senarai tidak kosong maka akan mempunyai nilai variabel baru.kanan sama dengan nilai awal,awal.kiri akan ditujjukaan ke baru,nilai variabel awal sama dengan baru dan nilai awal.kiri ditujukkan ke null.
       voidtambahBelakang(String NAMA, int UMUR)

     {
              System.out.println("tambahbelakang '" +NAMA+ "'dilakukan..");
simpulbaru = new simpul();
baru.ngisiSimpul(NAMA, UMUR);

if (awal == null)
          {
                     awal       = baru;
akhir      = baru;
baru.kiri  = null;
baru.kanan = null;
          }

else          //***jikasenaraitidakkosong***\\
          {
baru.kiri   = akhir;
akhir.kanan = baru;
akhir       = baru;
baru.kanan  = null;
          }
     }
Ø  Method “tambahBelakang”  mempunyai parameter NAMA bertipe String dan UMUR bertipe integer. Terdapat juga perintah untuk menampilkan teks “tambah belakang ” yang diambil dari variabel NAMA dan kelanjutan teksnya adalah “dilakukan . . .” method ini juga melakukan penciptaan sebuah object simpul baru = new simpul(); dimana objek baru.ngisiSimpul diambil dari nilai  variabel NAMA, dan UMUR. Sehingga terwujud suatu kondisi :
o   saat nilai senarai masih kosong saat nilai awal = null maka nilai variabel awal sama dengan nilai  baru dan akhir sama dengan nilai baru, sehingga nilia variabel baru.kanan  akan sama dengan null dan baru.kiri ditujukkan ke null.
o   Bila kondisi  senarai tidak kosong maka mempunyai nilai baru.kiri sama dengan akhir,nilai variabel akhir.kanan sama dengan baru,nilai variabel akhir sama dengan nilai variabel baru, dan nilai variabel baru.kanan sama dengan null.
voidtambahTengah(int POSISI, String NAMA, int UMUR)

     {
              System.out.println("tambahtengah '" +NAMA+ "'dilakukan..");
       if (awal == null)
          {
                     simpulbaru = new simpul();
baru.ngisiSimpul(NAMA, UMUR);
awal        = baru;
akhir       = baru;
baru.kiri   = null;
baru.kanan  = null;
          }

else
          {
                     intjumlahSimpul = hitungJumlahSimpul ();

       if (POSISI==1)
              tambahDepan (NAMA, UMUR);

       else if (POSISI >jumlahSimpul)
              tambahBelakang (NAMA, UMUR);
else

              {
                           simpul bantu ;
bantu = awal;
int N = 1;
while ((N

                   {
                                  bantu = bantu.kanan;
          N++;
                   }
simpulbaru     = new simpul ();
baru.ngisiSimpul (NAMA, UMUR);
baru.kiri       = bantu.kiri;
baru.kiri.kanan = baru;
baru.kanan      = bantu;
bantu.kiri      = baru;
              }
          }
     }
Ø  Perintah Method “tambahTengah” dengan parameter dimana variabel POSISI bertipe integer, NAMA bertipe string, dan UMUR bertipe integer. Terdapat juga perintah untuk menampilkan teks “tambah tengah ” yang diambil dari variabel NAMA dan kelanjutan teksnya adalah “dilakukan . . .” Sehingga terwujud suatu kondisi :
o   Saat kondisi nilai senarai masih kosong maka method ini melakukan penciptaan sebuah object simpul baru = new simpul(); dimana objek baru.ngisiSimpul diambil dari nilai  variabel NAMA, dan UMUR. jika nilai awal = null maka nilai variabel awal sama dengan nilai variabel  baru dan nilai variabel akhir sama dengan nilai variabel baru,nilai variabel baru.kiri ditujukkan ke null,dan nilai variabel baru.kanan ditujukkan ke null.
o   Saat kondisi nilai nilai senarai tidak kosong maka dipangillah method jumlahSimpul yang mana nilai method ini sama dengan method hitungJumlahSimpul dimana method hitungJumlahSimpul  tanpa parameter.Dan mempunyai suatu kondisi menggunakan if - else,
·         Jika  variabel POSISI itu sama dengan 1 maka panggilah fungsi tambahDepan yang berparameter NAMA dan UMUR.
·          Jika variabel POSISI itu lebih besar dari pada nilai jumlahSimpul,maka dipanggilah fungsi tambahDepan yang berparameter NAMA dan UMUR.
·         Jika dalam kondisi lainya maka nilai variabel simpul bantu dimana bantu adalah nilai awal dan N diberi nilai ketetapan 1. Sehingga terjadi perulangan while apabila nilia N itu kurang dari nilai POSISI dikurangi 1 dan nilai variabel bantu tidak sama dengan nilai akhir. Didalam perulangan ini nilai variabel bantu samadengan bantu.kanan, sehingga nilai N akan bertamabah satu terus. Dalam kondisi ini juga terdapat suatu penciptaan sebuah object simpul baru = new simpul(); dimana objek baru.ngisiSimpul(diambil dari variabel NAMA, dan UMUR). Sehingga nilai baru.kiri sama dengan bantu.kiri,nilai variabel  baru.kiri.kanan sama dengan nilai baru,nilai baru.kanan sama dengan bantu dan nilai bantu.kiri sama dengan nilai baru.
       voidcetakSenarai ()
       {
              System.out.print ("CETAK : ");
              if (awal == null)
                     System.out.print ("...SENARAI KOSONG...");

                     else
                     {
                           simpul bantu;
                           bantu = awal;
                           while (bantu != null)
                           {
                                  bantu.cetakSimpul();
                                  bantu = bantu.kanan;
                           }
                     }
                     System.out.println ("");
       }
Ø  Perintah Method “cetakSenarai” tanpa parameter dimana didalamnya terdapat perintah untuk menampilkan mencetak “CETAK : “. Dalam perintah ini ada beberapa kondisi yaitu
o   Saat kondisi senarai masih kosong maka nilia awal = null.Dan perintah untuk menampilkan kalimat “. . .SENARAI KOSONG. . .”
o   Saat kondisi senarai tidak kosong maka nilai variabel simpul bantu, dimana bantu sama dengan nilai awal sehingga terdapat perulangan while dengan nilai bantu tidak sama dengan null. Didalam perulangan terdapat pemanggilan fungsi bantu.cetakSimpul, dimana bantu samadengan nilai bantu.kanan.
voidhapus(String NAMA)
     {
              if (awal == null)
       {
                     System.out.println ("senaraikosong, menghapustidakdapatdilakukan");
       }
       else
              {
                           if (awal.nama.equals (NAMA))
                   {   System.out.println ("menghapus "+NAMA+" dilakukan..");
              if (awal == akhir)
                     inisialisasiSenaraiKosong();

                     else
                     {    awal = awal.kanan;
                     awal.kiri = null;
                     }
              }

       else if (awal.nama.equals(NAMA))

          {
       System.out.println ("menghapus "+NAMA+" dilakukan..");
       akhir = akhir.kiri;
       awal = awal.kanan;
          }

else

          {
                     simpul bantu;
bantu = awal;
booleanketemu = false;
while (bantu!=akhir)   //while(bantu.kanan.nama != HNAMA)

{ if (bantu.nama.equals (NAMA))
                {   System.out.println("menghapus "+NAMA+"dilakukan.");
ketemu = true;
bantu.kanan.kiri = bantu.kiri;
bantu.kiri.kanan = bantu.kanan;
break;
                   }
bantu=bantu.kanan;
                   }
if (ketemu==false)
System.out.println ("data ' "+ NAMA + "'' tidakditemukan");

                   }
                  }
                 }
                }
Ø  Perintah Method “hapus” dengan parameter NAMA yang bertipe string. Sehingga terwujud suatu kondisi:
o   Saat kondisi senarai kosong maka tercipta nilai awal = null. Dan perintah untuk menampilkan kalimat “.Senarai kosong, menghapus tidak dapat dilakukan.
o   Saat kondisi senarai tidak kosong maka akan menciptakan suatu kondisi lagi yakni:
ü  Jika ditemukan diawal maka NAMA dari nilai awal.nama.equals .Dan perintah untuk menghapus data nama adalah kata “menghapus” itu didapat dari variabel NAMA dan “dilakukan . . .” dimana nilai awal sama dengan awal.kanan. Disisinipun terjadi perintah kondisi lagi bila:
·         Simpul hanya ada satu buah maka ditetapkan kondisi nilai awal sama dengan akhir,itu didapat dari fungsi inisialisasiSenaraiKosong.
·         Jika simpul adanya lebih dari satu maka diciptakan kondisi yakni bila awal sama dengan awal.kanan dan awal.kiri ditujukkan ke null.
ü  Jika ditemukan diakhir maka NAMA dari nilai akhir.nama.equals .Dan perintah untuk menghapus data nama adalah kata “menghapus” itu didapat dari variabel NAMA dan “dilakukan . . .” dimana nilai akhir sama dengan akhir.kiri dan akhir.kanan ditujukkan ke null.
ü  Apabila nama tidak ditemukan diawal maupun diakhir maka untuk menghapus nama apabila tidak ada nama didalam list,maka tercipta sintak yakni simpul bantu apabila bantu sama dengan awal maka terlebih dahulu menetapkan kondisi yaitu ketemu sama dengan false dengan nilai dari tipe data Boolean.Dan menggunakan perulanganya yakni while dengan kondisi akan berakhir bila ditemukan bahwa bantu tidak sama dengan akhir.Dari perulangan ini tercipta kondisi lagi yakni:
·         JIka NAMA dari nilai bantu.nama.equals ini (untuk apabila nama ditemukan diawal) Maka perintah untuk menghapus data nama adalah kata “menghapus” itu didapat dari variabel NAMA dan “dilakukan . . .” dimana kondisi ketemu sama dengan true,bantu.kanan.kiri sama dengan bantu.kiri , bantu.kiri.kanan sama dengan bantu.kanan lalau prose berhenti karena adanya kondisi break untuk mengakhiri program ini.Lalu bantu akan menetapkan nilai sama dengan bantu.kanan.
·         Jika kondisi ketemu sama dengan false maka system akan memberi tahu bahwa : apabila tidak ada nama didalam list, maka tampilkan kata “data” diikuti nama dari variabel NAMA dan dilanjutkan kata “tidak diteukan.” Sehingga bisa dibaca misal “data si A tidak ditemukan”
Class senaraiganda
{
public static void main(String[]args)
Ø  Pernyataan diatas digunakan untuk memulai program dengan method main. Kata kunci void di depan main merupakan keharusan pada bahasa java.
senaraimahasiswa = new senarai();
mahasiswa.inisialisasiSenaraiKosong();
Ø  Program diatas adalah bagian utama dari beberapa method atau fungsi yang sudah saya bahas disebelumnya, dengan nama class senaraiTunggal  lah program ini disimpan, karena ini adalah merupakan bagian program utama.  Kemudian terdapat pendeklarasian public untuk melakukan pengoperasian pada senarai dimana kita dapat melakukan atau memberikan perintah menambah, mencetak, dan menghapus data disini. Penciptaan objek untuk senarai mahasiswa yaitu : senarai mahasiswa = new senarai();

·         Praktikum 2
Pada praktikum 2 menambahkan perintah untuk mencetak senarai dan menambah dari depan, yaitu :
mahasiswa.tambahDepan("Herii Purnama", 125410101);
mahasiswa.tambahDepan("Cecep", 16);
mahasiswa.tambahDepan("Budi", 17);
mahasiswa.tambahDepan("Abud", 18);
mahasiswa.cetakSenarai();
Hasil Output:
Ø  Deretan nama yang mundul adalah Heri Purnama,Cecep,Budi dan abud.
Ø  jadi yang tampil hanya” tambah depan ‘Herii Purnama’ dilakukan. . . “ , karena oleh method tambahDepan hanya memberikan perintah untuk memanggil variabel NAMA saja. Perintah “mahasiswa.cetakSenarai();” ini untuk mencetak nama dan umur dari mahasiswa itu, karena sudah dideklarasikan pada method cetakSenarai. Penampilan cetaknya berawal dari abud sampai Herii Purnama.


·         Praktikum 3
Pada praktikum 3 menambahkan perintah untuk mencetak senarai dan menambah dari belakang , yaitu :
mahasiswa.tambahBelakang("Eko",25);
mahasiswa.tambahBelakang("Feri",25);
mahasiswa.tambahBelakang("Gunawan",32);
mahasiswa.tambahBelakang("Hasan",19);
mahasiswa.cetakSenarai();

·         HASIL OUTPUT :
Ø  Deretan nama nya adalah Herii Purnama,cecep,budi,abud,eko,feri,gunawan,hasan
Ø  Perintah diatas hampir sama dengan perintah mahasiswa.tambahDepan  , hanya saja beda nama dan umur data mahasiswa, sehingga penjelasanya sama. Hanya saja pada tampilan cetak kedua , ini yang dicetak seluruh data mahasiawa yang dimasukan, karena pada method cetakSenarai sudah jelas , untuk  pencetakanya dari nilai data awal sampai perulangan data bantu paling kanan (dalam artian untuk mencetak semua data mahasiswa yang ada pada program utama). Pencetakanya dari abud sampai Herii Purnama berlanjut ke Eko sampai Hasan.


·         Praktikum 4
Pada praktikum 4 menambahkan perintah untuk mencetak senarai dengan menambah data ditengah , yaitu :
mahasiswa.tambahTengah(4,"Zaenal",25);
mahasiswa.cetakSenarai();

·         HASIL OUTPUT :
Ø  Yang terjadi pada hasil running adalah zaenal berada pada posisis indeks ke-3 diantara budi dan heri purnama.
Ø  Pada indeks ke-3 diantara budi dan herii purnama.
Ø  Ini bisa terjadi karena nama yang telah dimasukkan telah ditentukan pada method tambah tenggah yang telah dijelaskan diawal tadi.

·         Praktikum 5
Pada praktikum 5 menambahkan perintah untuk hapus data si  Herii Purnama, yaitu :
mahasiswa.hapus("Herii Purnama");
mahasiswa.cetakSenarai();


·         HASIL OUTPUT :
Ø  Program diatas merupakan perintah untuk menghapus data mahasiswa yang benama Herii Purnama, maka setelah dilakukan penghapusan data mahasiswa yang bernama Herii Purnama, dapat kita lihat pada hasil CETAK nya, terlihat bahwa Herii Purnama sudah tidak ada pada daftar data senarai. Pemanggilan perintah hapus pada method hapus.

·         Praktikum 6
Pada Pada praktikum 6 menambahkan  perintah untuk hapus data si Parmin, yaitu :
mahasiswa.hapus("Parmin");
mahasiswa.cetakSenarai();

·         HASIL OUTPUT :
Ø  Program diatas adalah perintah untuk menghapus data mahasiswa yang bernama Parmin, terdapat tampilan bahwa “data ‘Parmin’ yang anda maksud tidak ada dalam list”. Hal ini dikarenakan program ini tidak mengenal data mahasiswa yang bernama Parmin, sehingga menampilkan perintah tersebut. Sehingga tampilan mencetak tetap sama pada hasil output program sebelumnya


2).Latihan
1.      
·       Listing
void cetakSenarai()
     {
               System.out.print ("CETAK : ");
       if (awal==null) //***jika senarai masih kosong***\\
              System.out.print ("....senarai kosong...");
       else          //***jika senarai tidak kosong***\\

     {
                simpul bantu;
          bantu = akhir;
          while (bantu != null)
          {
                        bantu.cetakSimpul();

               bantu = bantu.kiri;
          }
        }

          System.out.println("");
     }

·         Running
Cetak  Mundur
Cetak Maju
Ø  Dari program diatas terlihat bahwa pada hasil outputnya adalah bila tercetak dari depan dengan urutan nama nya adalah (abud,budi,cecep,Herii Purnama) sedang bila dicetak mundur urtutan namanya berubah menjadi(Herii Purnama,cecep,abud) ini dikarenakan perintah ini:
Ø  Sebelum bantu = awal; bantu = bantu.kanan; (cetak depan)
Ø  Sesudah  bantu = akhir; bantu = bantu.kiri; (cetak belakang)

2.     Dengan menambah program method dibawah ini kedalam program
Dan pada program utama di entri sintak yang ingin dicari contoh:
Mencari data :            mahasiswa.mencariData("cecep",12,'L');
·       Listing
void mencariData(String NAMA, int UMUR,char JK)
       {
              {
                                         simpul bantu;
                                         bantu = awal;

                                         while (bantu.kanan.nama.equals (NAMA) == false)
                                         {   bantu = bantu.kanan;
                                                if (bantu.kanan == null) break;
                                         }


                                         if ((bantu == akhir) && (NAMA.equals (akhir.nama) == false))
                                         {
                                                System.out.println ("data "+NAMA+" ditemukan");
                                         }
                                         if ((bantu == akhir) && (NAMA.equals (akhir.nama) == true))
                                         {
                                                System.out.println ("data "+NAMA+" tidakditemukan");
                                         }

                     }
       }

·         Running

3).Tugas
·       Listing Program
class simpul

{
       protected

     String          nama;
int    umur;
char jk;
simpul kiri;
simpul kanan;

public

void ngisiSimpul(String NAMA, int UMUR,char JK)

     {
              nama = NAMA;
              umur = UMUR;
              jk     =     JK;

     }

void cetakSimpul()

     {
              System.out.println("nama :"+nama + " " +"Umur :"+umur +" "+"JK :"+jk);
     }

}

class senarai

{ protected
simpul awal;
simpul akhir;

public

void inisialisasiSenaraiKosong()

     {
              awal = null;
        akhir = null;

     }

int hitungJumlahSimpul()
{  int N = 0;
       simpul bantu;
       bantu  =awal;
       while (bantu !=null)
       {      bantu = bantu.kanan;
              N++;
       }
       return (N);
     }

void tambahDepan(String NAMA, int UMUR,char JK)

     {
              System.out.println("tambahdepan '" +NAMA+ "' dilakukan..");
simpul baru = new simpul();
baru.ngisiSimpul(NAMA, UMUR,JK);

if (awal == null) //***jikasenaraimasihkosong***\\\

          {
                     awal       = baru;
akhir      = baru;
baru.kiri  = null;
baru.kanan = null;
          }

else          //***jikasenaraitidakkosong***\\
          {
                     baru.kanan = awal;
awal.kiri  =baru;
awal       = baru;
awal.kiri=null;
          }

     }

void tambahBelakang(String NAMA, int UMUR,char JK)

     {
              System.out.println("tambahbelakang '" +NAMA+ "'dilakukan..");
simpul baru = new simpul();
baru.ngisiSimpul(NAMA, UMUR,JK);

if (awal == null)
          {
                     awal       = baru;
akhir      = baru;
baru.kiri  = null;
baru.kanan = null;
          }

else          //***jikasenaraitidakkosong***\\
          {
baru.kiri   = akhir;
akhir.kanan = baru;
akhir       = baru;
baru.kanan  = null;
          }
     }


void tambahTengah(int POSISI, String NAMA, int UMUR,char JK)

     {
              System.out.println("tambahtengah '" +NAMA+ "'dilakukan..");
       if (awal == null)
          {
                     simpul baru = new simpul();
baru.ngisiSimpul(NAMA, UMUR,JK);
awal        = baru;
akhir       = baru;
baru.kiri   = null;
baru.kanan  = null;
          }

else
          {
                     int jumlahSimpul = hitungJumlahSimpul ();

       if (POSISI==1)
              tambahDepan (NAMA, UMUR,JK);

       else if (POSISI >jumlahSimpul)
              tambahBelakang (NAMA, UMUR,JK);
else

              {
                           simpul bantu ;
bantu = awal;
int N = 1;
while ((N

                   {
                                  bantu = bantu.kanan;
          N++;
                   }
simpul baru     = new simpul ();
baru.ngisiSimpul (NAMA, UMUR,JK);
baru.kiri       = bantu.kiri;
baru.kiri.kanan = baru;
baru.kanan      = bantu;
bantu.kiri      = baru;
              }
          }
     }


void cetakSenarai()
     {
              System.out.print ("CETAK : ");
       if (awal==null) //***jikasenaraimasihkosong***\\
              System.out.print ("....senaraikosong...");
       else          //***jikasenaraitidakkosong***\\

     {
              simpul bantu;
bantu = awal;
while (bantu != null)
          {
       bantu.cetakSimpul();
bantu = bantu.kanan;

          }
        }

System.out.println("");
     }

void hapus(String NAMA)
     {
              if (awal == null)
       {
                     System.out.println ("senaraikosong, menghapustidakdapatdilakukan");
       }
       else
              {
                           if (awal.nama.equals (NAMA))
                   {   System.out.println ("menghapus "+NAMA+" dilakukan..");
              if (awal == akhir)
                     inisialisasiSenaraiKosong();

                     else
                     {    awal = awal.kanan;
                     awal.kiri = null;
                     }
              }

       else if (awal.nama.equals(NAMA))

          {
       System.out.println ("menghapus "+NAMA+" dilakukan..");
       akhir = akhir.kiri;
       awal = awal.kanan;
          }

else

          {
                     simpul bantu;
bantu = awal;
boolean ketemu = false;
while (bantu!=akhir)   //while(bantu.kanan.nama != HNAMA)

{ if (bantu.nama.equals (NAMA))
                {   System.out.println("menghapus "+NAMA+"dilakukan.");
ketemu = true;
bantu.kanan.kiri = bantu.kiri;
bantu.kiri.kanan = bantu.kanan;
break;
                   }
bantu=bantu.kanan;
                   }
if (ketemu==false)
System.out.println ("data ' "+ NAMA + "'' tidakditemukan");

                   }
                  }
                 }
                }


class SenaraiGanda
{    public static void main(String[] args)
     {
              senarai mahasiswa = new senarai();
              mahasiswa.inisialisasiSenaraiKosong();

              mahasiswa.tambahDepan("HERII PURNAMA",15,'L');
              mahasiswa.tambahDepan("Cecep",12,'L');
              mahasiswa.tambahDepan("Budi",11,'L');
              mahasiswa.tambahDepan("Abud",10,'L');
              mahasiswa.cetakSenarai();

              mahasiswa.tambahBelakang("Eko",25,'L');
              mahasiswa.tambahBelakang("Feri",25,'L');
              mahasiswa.tambahBelakang("Gunawan",32,'L');
              mahasiswa.tambahBelakang("Hasan",19,'L');
              mahasiswa.cetakSenarai();

              mahasiswa.tambahTengah(4,"Zaenal",25,'L');
              mahasiswa.cetakSenarai();
              mahasiswa.hapus("HERII PURNAMA");
              mahasiswa.cetakSenarai();
              mahasiswa.hapus("Parmin");
         }
}
·       Running Program
4).Kesimpulan
Double Linked List atau Senarai Berantai ganda , hampir sama dengan Single Linked List. Bedanya Double Linked List lebih flexibel dibanding Single Linked List karena pada Double Linked List semua simpul – simpulnya yang ada di dalamnya memiliki dua buah penunjuk yang dignakan untuk mengkaitkan diri dengan simpul lain yang ada di sebelah kanannya dan sebelah kirinya.
Dalam konsep DOUBLE LINKED LIST terdapat tiga unsur penting yaitu:
1.       Penunjuk (pointer)
2.       Simpul (list atau node)
3.       Senarai Berantai (Single Linked List itu sendiri).
Senarai berantai ganda  ini gunanya untuk penghubung diantara simpul – simpul satu dengan yang lain, dimana penghubung antara simpul baru, simpul bantu, simpul awal, simpul akhir, simpul kanan,dan simul kiri.Simpul yang seperti itu disebut simpul ganda, karena simpul ini mempunyai dua petunjuk yaitu ‘kanan dan kiri’.  Artinya simpul ini dapat menujuk ke simpul yang serupa dengan dirinya yang letaknya disebelah kiri maupun kananya.
5).Listing Terlampir


    Blogger Comment
    Facebook Comment

0 komentar:

Post a Comment

Thanks For Your Feedback.