Kamis, 19 Desember 2013

Lapran Praktikum Struktur Data 5-6



LAPORAN PRAKTIKUM
STRUKTUR DATA
MODUL V













Nama        : Demy Octiana Azmianti
NIM           : 125610118
Jurusan     : Sistem Informasi

JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI MANAJEMEN DAN INFORMATIKA
AKAKOM YOGYAKARTA
2013








PERTEMUAN KE – 5
SINGLE LINKEDLIST
( SENARAI BERANTAI TUNGGAL )


A.    Pembahasan Listing

class simpul kelas simpul, kelas ini digunakan untuk mendeklarasikan pengisian simpul dan membaca hasil output list. Kelas ini nantinya akan dipanggil di kelas implementasi linklist.

pro{ tected
String    nama; baris ini merupakan variable nama, tipe variable ini yaitu String.
int umur; ini merupakan variable umur dengan tipe integer.
simpul    kanan; → digunakan untuk mendeklarasikan atribut kanan.

public
     void ngisi_simpul(String NAMA, int UMUR)
     {    nama = NAMA;
          umur = UMUR;
     }→ diatas merupakan method ngisi_simpul yang berisi parameter NAMA dan parameter UMUR, parameter NAMA memiliki tipe data String sedangkan parameter UMUR memiliki tipe data integer. Didalam method ngisi_simpul ini berisi pendeklarasian bahwa variable nama mengarah pada parameter NAMA dan variable umur mengarah pada parameter UMUR. Method ini digunakan untuk mengisi list.

void cetak_simpul()
     {    System.out.print (nama + "-" + umur + "   ");
     } → diatas merupakan method dengan nama method cetak_simpul yang digunakan untuk membaca hasil list, method ini tidak memiliki parameter dan method ini digunakan untuk menampilkan keluaran nama – umur.
}
class senarai ini merupakan kelas senarai, kelas ini sama seperti kelas simpul. Kelas ini nantinya juga akan diimplementasikan dikelas link list.
{ protected
simpul    awal; digunakan untuk mendeklarasikan atribut awal.
simpul    akhir; digunakan untuk mendeklarasikan atribut akhir.

public
     void inisialisasi_senarai()
     {    awal = null;
          akhir = null;
     } → diatas merupakan method dengan nama method inisialisasi_senarai yang digunakan untuk menginisialisasikan simpul awal dan simpul akhir ke null. Null yaitu adalah sebuah referensi ke alamat nol atau belum referensi ke obyek yang lain.

void tambah_depan(String TDNAMA, int TDUMUR) ini merupakan method tambah_depan yang memiliki parameter  TDNAMA dan TDUMUR, TDNAMA memiliki tipe String dan TDUMUR memiliki tipe integer, method tambah_depan ini digunakan untuk menambah list pada bagian depan. Isi dari method tambah_depan yaitu :
     {    System.out.println("tambah depan '" +TDNAMA+ "' dilakukan.."); → baris ini digunakan untuk menampilkan keluaran tambah depan +digabung dengan nama yang telah ditambahkan+ dilakukan .
simpul  baru = new simpul();digunakan untuk membuat obyek dari kelas simpul, nama obyek tersebut yaitu baru. Dalam membuat obyek tanda - tandanya yaitu terdapat kata – kata new.
baru.ngisi_simpul(TDNAMA, TDUMUR); → baru.ngisi_simpul artinya obyek baru digeser ke method ngisi_simpul jadi list yang baru ditambahkan nanti merupakan obyek baru.

          if (awal == null) // list masih kosong
          {    awal = baru;
              akhir = baru;
              baru.kanan = null;
          } jika simpul awal merupakan null adalah benar atau list masih kosong, maka simpul awal diarahkan ke obyek baru, atau simpul akhir diarahkan ke obyek baru kemudian obyek baru digeres ke simpul kanan kemudian diarahkan ke null.

          else
          {    baru.kanan = awal;
              awal = baru;
          }jika pernyataan diatas salah maka pernyataan ini akan dikerjakan,yaitu obyek baru digeser kesimpul kanan kemudian diarahkan ke  simpul awal,  simpul awal mengarah pada obyek baru.
     }
     void tambah_belakang(String TBNAMA, int TBUMUR)→ini merupakan method tambah_belakang yang memiliki parameter TBNAMA yang bertipe String dan parameter TBUMUR yang bertipe integer. Method ini digunakan untuk menambah list pada bagian belakang.
     {System.out.println("tambah belakang '" +TBNAMA+ "'dilakukan.."); baris ini diigunakan untuk menampilkan keluaran tambah belakang digabung dengan naka yang telah ditambahkan pada bagian belakang.
simpul baru = new simpul(); digunakan untuk membuat obyek dari kelas simpul, nama obyek tersebut yaitu baru.
         baru.ngisi_simpul(TBNAMA, TBUMUR); → baru.ngisi_simpul artinya obyek baru digeser ke  method ngisi_simpul, jadi list yang baru ditambahkan nanti merupakan obyek baru.

if (awal == null)
          {    awal = baru;
              akhir = baru;
              baru.kanan = null;
          }→ jika pernyataan simpul awal sama dengan null adalah benar, maka simpul awal diarahkan ke obyek baru, atau simpul akhir diarahkan ke obyek baru, kemudian obyek baru digeser ke simpul kanan dan diarahkan ke null.

else
          {    akhir.kanan = baru;
              akhir = baru;
              baru.kanan = null;
          } jika pernyataan diatas salah maka pernyataan ini akan dikerjakan, simpul akhir digeser ke  simpul kanan kemudian diarahkan ke obyek baru, simpul akhir diarahkan ke obyek baru dan kemudian obyek baru digeser ke simpul kanan dan diarahkan ke null.
}
     void tambah_tengah(String TTNAMA, int TTUMUR) baris ini merupakan method tambah_tengah yang memiliki parameter TTNAMA dan TTUMUR, parameter TTNAMA memiliki tipe String dan TTUMUR memiliki  tipe integer.
{    System.out.println("tambah tengah '" +TTNAMA+ "'dilakukan.."); baris ini diigunakan untuk menampilkan keluaran tambah tengah digabung dengan nama yang telah ditambahkan pada bagian tengah.
simpul baru = new simpul();→ digunakan untuk membuat obyek dari kelas simpul, nama obyek tersebut yaitu baru.
baru.ngisi_simpul(TTNAMA, TTUMUR); → baru.ngisi_simpul artinya obyek baru digeser ke method ngisi_simpul, jadi list yang baru ditambahkan nanti merupakan obyek baru.

          if (awal == null)
          {    awal = baru;
              akhir = baru;
              baru.kanan = null;
          }→ jika simpul awal adalah null, pernyataan diatas akan dikerjakan, yaitu simpul awal diarahkan ke obyek baru atau simpul akhir diarahkan ke obyek baru, obyek baru digeser ke simpul kanan dan kemudian diarahkan ke null.

          else → jika pernyataan diatas salah maka pernyataan ini akan diseleksi.
{    if (TTNAMA.compareTo(awal.nama) < 0)    //if (awal.nama > TTNAMA)
              {    baru.kanan = awal;
                   awal = baru;
              } Obyek baru digeser ke simpul kanan mengarah pada simpul awal, artinya yaitu obyek yang baru ditambah merupakan awal.
              else if (akhir.nama.compareTo(TTNAMA) < 0)   //if(TTNAMA > akhir.nama) jika pernyataan diatas tidak ada yang cocok maka pernyataan ini akan diseleksi, jika TTNAMA letaknya lebih dari simpul akhir digeser ke variable nama adalah benar maka akan dikerjakan.
             {    akhir.kanan = baru;simpul akhir digeser ke simpul kanan mengarah ke obyek baru.
akhir = baru;simpul akhir mengarah ke obyek baru.
               baru.kanan = null; → obyek baru digeser ke simpul kanan mengarah pada null.
              }
              Elsejika pernyataan diatas tidak benar maka pernyataan ini akan dikerjakan.
              {    simpul bantu = new simpul(); membuat obyek baru dengan nama simpul yang terdapat pada kelas simpul.
                   bantu = awal; obyek bantu diarahkan pada variable awal.
while (bantu.kanan.nama.compareTo(TTNAMA) < 0)     //while (bantu.kanan.nama < TTNAMA) → arti perulangan ini yaitu obyek bantu digeser ke simpul kanan kemudian simpul kanan digeser ke variable nama jika letak nama kurang dari indek ke 0  maka perulangan akan dikerjakan.
{    bantu = bantu.kanan; →  obyek bantu diarahkan ke obyek bantu yang digeser ke simpul kanan.
if (bantu == akhir) break; pernyataan ini artinya yaitu jika obyek bantu merupakan variable akhir maka pernyataan akan dikerjakan, break disini artinya untuk mengakhiri perulangan .
                   }
             baru.kanan = bantu.kanan; obyek baru digeser ke simpul kanan kemudian diarahkan ke obyek bantu kemudian obyek bantu tesebut digeser ke simpul kana.
bantu.kanan = baru; → obyek bantu digeser kesimpul kanan kemudian diarahkan ke obyek baru.
              }
          }
     }
     void cetak_senarai() ini merupakan method baru dengan nama cetak_senarai, method ini tidak memiliki parameter. Method ini digunakan untuk membaca list.
     {    simpul bantu = new simpul();→ baris ini digunakan untuk membuat obyek dari kelas simpul, nama obyek tersebut yaitu bantu.
          bantu = awal;
          while (bantu != null)
          {    bantu.cetak_simpul();
              bantu = bantu.kanan;
          } → baris diatas digunakan untuk melakukan perulangan, jika obyek bantu tidak sama dengan null maka perulangan akan dikerjakan terus sampai obyek bantu terddapat pada posisi null,obyek bantu diarakan pada simpul awal, selanjutnya simpul awal akan dibaca, kemudian obyek bantu digeser ke method cetak_simpul, kemudian obek bantu digeser ke simpul kanan.
System.out.println("");
     }
     void hapus(String HNAMA)baris ini merupakan method dengan nama method hapus yang digunakan untuk menghapus daftar list, method hapus ini memiliki parameter HNAMA yang memiliki tipe String.  Isi dari method hapus yaitu :
  {    System.out.println("menghapus '" + HNAMA + "' dilakukan.."); digunakan untuk menampilkan keluaran menghapus digabung dengan nama yang akan dihapus.
  if (awal.nama.equals(HNAMA)) jika simpul awal digeser ke variable nama adalah HNAMA maka pernyataan dibawah ini akan dikerjakan. Equals digunakan untuk menganti tanda (=) .
          {    awal = awal.kanan; → isi dari pernyataan diatas yaitu simpul awal akan diarahkan ke simpul awal yang digeser ke simpul kanan.
}
          Else
          {    simpul bantu = new simpul();
              bantu = awal;  jika pernyataan diatas salah maka pernyataan ini akan diseleksi, pernyataan ini menyatakan bahwa dibuat obyek baru dengan nama obyek bantu, obyek ini merupakan obyek dari kelas simpul. Obyek bantu diarahan ke simpul awal, kemudian dilakukan perulangan dibawah ini.
while (bantu.kanan.nama.equals(HNAMA)==false)   //while(bantu.kanan.nama != HNAMA) perulangan akan dikerjakan jika obyek bantu digeser ke simpul kanan dan kemudian digeser ke variable nama tidak sama dengan HNAMA.

              {    bantu = bantu.kanan;
                   if (bantu.kanan ==  null) break;
              }→ obyek bantu diarahkan ke obyek bantu yang digeser ke simpul kanan, jika obyek bantu yang digeser ke kanan sama dengan null maka perulangan akan dikerjakan.

if ((bantu == akhir) && (HNAMA.equals(akhir.nama)==false))
              {         System.out.println("data '" + HNAMA + "'  yang anda maksud tidak ada dalam list");}  jika obyek bantu adalah akhir dan HNAMA sama dengan simpul akhir digeser ke variable nama adalah false maka akan ditampilkan keluaran “data” + nama yang akan dihapus + “yang anda maksud tidak ada dalam list.
              else
              { bantu.kanan = bantu.kanan.kanan;}jika pernyataan diatas salah maka pernyataan ini akan dikerjakan yaitu pernyataan yang menyatakan bahwa obyek bantu digeser ke simpul kanan kemudian diarahkan ke obyek bantu yang digeser ke simpul kanan kemudian digeser lagi ke simpul kanan.
          }}}
//----------------------bagian program utama-------------------------------------------------
class senarai_tunggal kelas senarai_tunggal merupakan implementasi dari kelas senarai dan simpul.
{    public static void main(String[] args) →method main.
     {    senarai mahasiswa = new senarai(); →membuat obyek baru dengan nama mahasiswa, obyek dibuat pada kelas senarai.
       mahasiswa.inisialisasi_senarai();
            didalam method inisialisasi_senarai ();
            awal = null;
             akhir = null;   
mahasiswa.tambah_depan("Feni",15);
          mahasiswa.tambah_depan("Cecep",12);
          mahasiswa.tambah_depan("Budi",11);
          mahasiswa.tambah_depan("Abud",10);
program diatas digunakan untuk menambah list pada bagian depan melalui method tambah_depan, pada list bagian depan ditambah nama- nama berikut beserta umurnya"Feni",15, "Cecep",12, "Budi",11  dan "Abud",10.
          mahasiswa.tambah_belakang("Gunawan",16);
          mahasiswa.tambah_belakang("Hasan",16);
          mahasiswa.tambah_tengah("Deni",13);
          mahasiswa.tambah_tengah("Eko",14);
pgogram diatas dilakukan penambahan list pada bagian belakang melalui method tambah_belakang, pada bagian belakang ditambahkan nama – nama berikut "Gunawan",16, "Hasan",16, "Deni",13, dan "Eko",14.
          mahasiswa.hapus("Cecep");
          mahasiswa.cetak_senarai();
          System.out.println("");
  kemudian dilakukan hapus list, dalam melakukan penghapusan dilakukan melalui method hapus, yang dihapus yaitu list dengan nama cecep kemudian dilakukan pembacaan list sehingga hasil ouputnya yaitu :

mahasiswa.tambah_tengah("Zaenal",25);dilakukan penambahan list pada bagian tengah, yaitu ditambah nama "Zaenal",25.
          mahasiswa.cetak_senarai();kemudian dicetak .
mahasiswa.hapus("Dedi");dilakukan method hapus pada nama dedi.
          mahasiswa.cetak_senarai();→kemudian hasilnya dibaca.
mahasiswa.hapus("Parmin");dilakukan penghapusan pada nama Parmin, karena nama Parmin tidah terdapat pada list sehingga terdapat keterangan data yang anda maksud tidak terdapat pada list.
mahasiswa.cetak_senarai();  kemudian hasilnya dibaca.
     }

B.     TUGAS
class simpul
{ protected
     String nama;
     String jenis;
     int umur;
     simpul kanan;
  public
     void ngisi_simpul(String NAMA,String KEL, int UMUR)
     {    nama = NAMA;
          umur = UMUR;
          jenis = KEL;
     }
     void cetak_simpul()
     {
         System.out.print (nama + "      " + jenis + " " +umur + "\t");
     }
}
class senarai
{ protected
     simpul    awal;
     simpul    akhir;
  public
     void inisialisasi_senarai()
     {    awal = null;
          akhir = null;
     }
     void tambah_depan(String TDNAMA,String KEL, int TDUMUR)
     {    System.out.println("tambah depan '" +TDNAMA+ "' dilakukan..");
          simpul  baru = new simpul();
          baru.ngisi_simpul(TDNAMA,KEL, TDUMUR);
          if (awal == null) // list masih kosong
          {    awal = baru;
               akhir = baru;
              baru.kanan = null;
          }
          else
          {    baru.kanan = awal;
              awal = baru;
          }
     }
     void tambah_belakang(String TBNAMA,String KEL, int TBUMUR)
     {    System.out.println("tambah belakang '" +TBNAMA+ "'dilakukan..");
          simpul baru = new simpul();
          baru.ngisi_simpul(TBNAMA,KEL,TBUMUR);
          if (awal == null)
          {    awal = baru;
              akhir = baru;
              baru.kanan = null;
          }
          else
          {    akhir.kanan = baru;
              akhir = baru;
              baru.kanan = null;
          }
     }
     void tambah_tengah(String TTNAMA,String KEL, int TTUMUR)
     {    System.out.println("tambah tengah '" +TTNAMA+ "'dilakukan..");
          simpul baru = new simpul();
          baru.ngisi_simpul(TTNAMA,KEL,TTUMUR);
          if (awal == null)
          {    awal = baru;
               akhir = baru;
               baru.kanan = null;
          }
          else
          {    if (TTNAMA.compareTo(awal.nama) < 0)    //if (awal.nama > TTNAMA)
              {    baru.kanan = awal;
                   awal = baru;
              }
              else if (akhir.nama.compareTo(TTNAMA) < 0)   //if(TTNAMA > akhir.nama)
              {    akhir.kanan = baru;
                   akhir = baru;
                   baru.kanan = null;
              }
              else
              {    simpul bantu = new simpul();
                   bantu = awal;
                   while (bantu.kanan.nama.compareTo(TTNAMA) < 0)     //while (bantu.kanan.nama < TTNAMA)
                   {    bantu = bantu.kanan;
                        if (bantu == akhir) break;
                   }
                   baru.kanan = bantu.kanan;
                   bantu.kanan = baru;
              }
          }
     }
     void cetak_senarai()
     {    simpul bantu = new simpul();
          bantu = awal;
          int i=0;
          while (bantu != null)
          {    i = i+1 ;
               System.out.print(i+".");
               bantu.cetak_simpul();
               bantu = bantu.kanan;
          }
          System.out.println("");
          System.out.println("");
     }
     void hapus(String HNAMA)
     {    System.out.println("menghapus '" + HNAMA + "' dilakukan..");
          if (awal.nama.equals(HNAMA))
          {    awal = awal.kanan;
          }
          else
          {    simpul bantu = new simpul();
              bantu = awal;
              while (bantu.kanan.nama.equals(HNAMA)==false)   //while(bantu.kanan.nama != HNAMA)
              {    bantu = bantu.kanan;
                   if (bantu.kanan ==  null) break;
              }
              if ((bantu == akhir) && (HNAMA.equals(akhir.nama)==false))
              {         System.out.println("data '" + HNAMA + "'  " +
                                "yang anda maksud tidak ada dalam list");
              }
              else
              {         bantu.kanan = bantu.kanan.kanan;}
          }
 }
  void get_name(String CRNAMA )
     {   System.out.println("mencari '" + CRNAMA + "' dilakukan..");
          if (awal.nama.equals(CRNAMA))
                          {   System.out.println("data '" + CRNAMA + "' " +
                              "ada diurutan ke- 1");
                    }
                else{
          simpul bantu = new simpul();
          bantu = awal;
          int i=0;
          while (bantu.nama.equals(CRNAMA)==false)
          {   i = i+1 ;
              bantu = bantu.kanan;
              if ((bantu == akhir) && (CRNAMA.equals(akhir.nama)==false))
              {         System.out.println("data '" + CRNAMA + "'  " +
                                "yang anda maksud tidak ada dalam list");
              }
              else if (bantu.nama.equals(CRNAMA)==true)
              {    System.out.println("data '" + CRNAMA + "' " +
                              "ada diurutan ke- "+(i+1));
              }
                       if (bantu.kanan ==  null) break;
                     }}}}
//----------------------bagian program utama-------------------------------------------------
class senarai_tunggal
{    public static void main(String[] args)
     {    senarai mahasiswa = new senarai();
          mahasiswa.inisialisasi_senarai();
                         mahasiswa.tambah_depan("Feni", "P", 15);
                         mahasiswa.tambah_depan("Cecep","L",12);
                         mahasiswa.tambah_depan("Budi","L",11);
                         mahasiswa.tambah_depan("Abud","L",10);
                         mahasiswa.tambah_belakang("Gunawan","L",16);
                         mahasiswa.tambah_belakang("Hasan","L",16);
                         mahasiswa.tambah_tengah("Deni","L",13);
                         mahasiswa.tambah_tengah("Eko","L",14);
                         mahasiswa.hapus("Cecep");
                         mahasiswa.cetak_senarai();
                         System.out.println("");
                         mahasiswa.tambah_tengah("Zaenal","L",25);
                         mahasiswa.cetak_senarai();
                         mahasiswa.hapus("Dedi");
                         mahasiswa.cetak_senarai();
                                  mahasiswa.hapus("Parmin");
                                  mahasiswa.cetak_senarai();
                                  mahasiswa.get_name("Zaenal");

                                  mahasiswa.cetak_senarai();
                                  mahasiswa.get_name("Dodo");
                                  mahasiswa.cetak_senarai();
         }
  }

Outputnya:

C.    Kesimpulan
      Link list atau senarai berantai yaitu pengalokasian memori secara dinamis yang digunakan untuk menyimpan data. Single link list yaitu linked list yang simpul – simpulnya hanya memiliki 1 buah petunjuk yang digunakan untuk mengaitkan simpul yang sejenis. Operasi – operasi yang dilakukan pada link list yaitu inisialisasi, tambah list belakang, tambah lisk depan, tambah list tengah, mengambil link list, mencari data dari dalam list.




LAPORAN PRAKTIKUM
STRUKTUR DATA
MODUL VI













Nama        : Demy Octiana Azmianti
NIM           : 125610118
Jurusan     : Sistem Informasi

JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI MANAJEMEN DAN INFORMATIKA
AKAKOM YOGYAKARTA
2013







Pembahasan Listing :

1.      class simpul : kelas ini digunakan untuk mendeklarasikan pengisian simpul dan membaca hasil output list. Kelas ini nantinya akan dipanggil di kelas implementasi linklist
2.      protected :merupakan perintah untuk membatasi hak akses, sehingga variabel nama dan umur tidak dapat diakses oleh kelas lain.
3.      String nama : data yang dimasukkan bertipe String dengan variabel nama
4.      int umur : data yang dimasukkan bertipe integer dengan variabel umur
5.      simpul kanan :pendeklarasian atribut dengan variabel kanan
6.      public
     void ngisi_simpul(String NAMA, int UMUR)
     {    nama = NAMA;
          umur = UMUR;} : void di samping digunakan untuk mengisi data pada simpul yang memiliki 2 variabel yaitu NAMA bertipr String dan UMUR bertipe integer
7.      void cetak_simpul(): void disamping digunakan untuk mencetak simpul
8.      System.out.print (nama +"-"+ umur + "   "): perintah untuk mencetak simpul yang telah dimasukkan. Method ini tidak memiliki parameter
9.      class senarai : kelas ini merupakan kelas yang dipakai untuk membentuk simpul yang digunakan sebagai bagian dari double link list, nama kelas ini yaitu kelas senarai
10.  protected :merupakan perintah untuk membatasi hak akses, sehingga variabel nama dan umur tidak dapat diakses oleh kelas lain.
11.  Simpul awal; : digunakan untuk mendeklarasikan atribut awal pada kelas simpul.
12.  Simpul akhir; :  digunakan untuk mendeklarasikanatribut akhir pada kelas simpul.
13.  public
     void inisialisasiSenaraiKosong()
     {    awal = null;
          akhir = null;} : merupakan pendeklarasian method dengan nama method inisialisasiSenaraiKosong, method ini tidak memiliki parameter, method ini digunakan untuk menyimpan link list. Di dalam method ini simpul awal mengarah pada null dan simpul akhir juga mengarah pada null.
14.  Int hitungJumlahSimpul() : sintaks disamping digunakan untuk menghitung jumlah simpul
15.  Int N =0;
Simpul bantu;
Bantu=awal;
While (bantu!=null){
Bantu=bantu.kanan;
N++;
Return(N); : merupakan .pendeklarasian untuk menghitung jumlah simpul dengan tipe data integer yang dimulai dari 0. Variabel bantu di deklarasikan dengan nama variabel yaitu awal N++ berarti simpul tersebut akan bertambah satu
16.  Void tambahDepan(String NAMA, int UMUR): void disamping digunakan untuk menambahkan data pada simpul bagian tengah, yang memiliki dua variabel yaitu nama bertipe string dan umur bertipe integer
17.  System.out.println("tambah depan '" +NAMA+ "' dilakukan.."); : perintah untuk mencetak pemberitahuan bahwa penambahan yang dilakukan di bagian tengah telah berhasil dilakukan
18.  simpul baru=new simpul();: pembuatan objek baru dengan nama variabel baru
19.  baru.ngisiSimpul(NAMA, UMUR);
 if (awal == null)
  {    awal = baru;
            akhir = baru;
            baru.kiri = null;
baru.kanan=null;}
     else
    {       baru.kanan = awal;
            awal.kiri = baru;
                        awal=baru;
                        awal.kiri=null;}} : dalam senarai ini juga didefinisikan bahwa awal adalah null dan akhir juga null. Untuk menambahkan data baru ke dalam program. Simpul baru= new Simpul menandakan bahwa simpul baru merupakan new simpul. if (awal == null)merupakan fungsi perulangan jika awal sama dengan kosong maka program akan menandai bahwa akhir adalah baru dan data baru mengikat variabel disebelah kanannya dan variabel baru mengikat variabel kirinya yang merupakan variabel kosong sehingga awal sama dengan baru.
20.  Void tambah belakang (String NAMA, int UMUR) : void disamping digunakan untuk menambah data pada simpul bagian belakang yang memiliki dua variabel yaitu NAMA bertipe String dan UMUR bertipe Integer.
21.  System.out.println(“tambah belakang ‘”+NAMA+ “’dilakukan..”) : perintah untuk mencetak pemberitahuan bahwa penambahan yang dilakukan dibagian belakang telah berhasil dilakukan.
22.  Simpul baru = new Simpul(); : pembuatan objek baru dengan nama variabel baru.
23.  If(awal == null){
Awal = baru;
Akhir = baru;
Baru.kiri = null;
Baru.kanan = null}

Else {
Baru.kiri = akhir;
Akir.kanan = baru;
Akhir = baru;
Baru.kanan = null }} : perintah diatas didefinisikan bahwa awal adalah kosong (null) dan akhir juga kosong (null). Untuk menambahkan data baru kedalam program simpul baru = new simpul menandakan bahwa simpul baru merupakan new simpul. If(awal==null) merupakan fungsi perulangan jika awal sama dengan kosong maka program akan menandai bahwa akhir adalah baru dan data baru mengikat variabel disebelah kananya.
24.  Void tambahtengah(int POSISI, String NAMA, int UMUR) : void disamping digunakan menambah data pada bagian tenagh simpul yang memiliki dua variabel yaitu nama dan umur.
25.  System.out.println(“tambah tengah’”+NAMA+ “’ dilakukan…”) : perintah untuk mencetak pemberitahuan bahwa penambahan yang dilakukan dibagian tengah telah berhasil dilakukan.!
26.  Simpul baru = new Simpul(); : pembuatan objek baru dengan nama variabel baru.
27.  Baru.ngisiSimpul(NAMA, UMUR);
Awal = baru;
Akhir = baru;
Baru.kiri = null;
Baru.kanan = null;
 Else {
Int jumlahSimpul = hitung JumlahSimpul();
If (POSISI ==1)
tambahDepan(NAMA, UMUR)
else if(POSISI > jumlahSimpul)
tambahBelakang (NAMA, UMUR) ;
else (
simpul bantu;
bantu = awal;
int N = 1;
while ((N < POSISI )&& (bantu! = akhir)){
bantu = bantu.kanan;
N++; } : merupakan fungsi perulangan jika awal sama dengan kosong maka prpogram akan menandai bahwa akhir adalah baru dan adata baru mengikat variabel disebelah kanannya dan variabel baru akan mengikat variabel dikirinya yang merupakan variabel kosong sehingga awal sama dengan baru. Pada perulangan tsb ada perulangan lagi untuk menghitung jumlah simpul yang menyatakan bahwa jika posisi awal adalah 1 maka penambhana dilakukan didepan, jika tidak maka penambahan dilakukan dibelakang.
28.  Simpul baru = new Simpul(); : pembuatan objek baru dengan nama variabel baru.
29.  Baru.ngisiSimpul(NAMA, UMUR);
Baru.kiri = bantu.kiri;
Baru.kiri.kanan = baru;
Baru.kanan = bantu;
Bantu.kiri = baru }}}
30.  Void cetak senarai() : void disamping digunakan untuk mencetak senarai yang telah dibuat.
31.  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;}} : untuk menghapus data diakhir senarai. Simpul bantu merupakan variabel awal. Dalam program ini menggunakan perulangan while. Variabel bantu mengikat di kanan yang sama dengan variabel akhir.variabel bantu adalah variabel yang hanya mengikat data di kanan. Simpul yang dihapus merupakan berada di akhr simpul, sehingga variabel akhir adalah variabel bantu. Dan variabel akhir mengikat variabel di sebelah kanan yang merupakan kosong maka program akan melakukan penghapusan.
32.  void hapus(String NAMA) : ini merupakan method hapus, method ini digunakan untuk menghapus list. Method hapus hanya memiliki satu parameter yaitu parameter HNAMA yang bertipe String.
33.  if (awal.nama.equals(NAMA))
{    awal = awal.kanan;} :  jika nama yang akan dihapus terdapat pada awal list maka simpul awal mengarah pada simpul awal dan kemudian digeser kearah kanan.
34.  else
          {    simpul bantu = new simpul();
              bantu = awal;
while(bantu.kanan.nama.equals(NAMA)==false)
{    bantu = bantu.kanan;
                   if (bantu.kanan ==  null);: jika obyek bantu digeser ke simpul kanan kemudian digeser lagi kevariabel nama tidak sama dengan nama yang akan dihapus maka obyek bantu mengarah pada obyek bantu yang digeser ke simpul kanan. Jika obyek bantu digeser ke simpul kanan adalah null maka perulangan selesai.
35.   If ((bantu == akhir) && (NAMA.equals(akhir.nama)==false))
   { System.out.println("data '" + NAMA + "' ) yang anda maksud tidak ada dalam list");} :  jika obyek bantu mengarah pada simpul akhir dan sampai simpul akhir nama salah atau tidak ditemukan maka keterangan data +nama yang dicari+ yang anda maksud tidak ada dalam list akan tampil.


TUGAS
class simpul
{ protected
      String nama;
      int umur;
      char jkel;
      String jbtn;
      simpul kiri;
      simpul kanan;
      public
      void ngisiSimpul(String NAMA, char JK, String JABATAN, int UMUR)
{
      nama = NAMA;
      umur = UMUR;
      jkel = JK;
      jbtn = JABATAN;
}
void cetakSimpul()
{
      System.out.print(nama+ "-"+ umur +" "+jkel+" "+jbtn+ " ");
}
}
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, String JABATAN)
                  {
                        System.out.println("tambah depan'"+NAMA+"'dilakukan..");
                        simpul baru=new simpul();
                        baru.ngisiSimpul(NAMA, JK, JABATAN, UMUR);
                        if(awal==null)
                        {
                              awal=baru;
                              akhir=baru;
                              baru.kiri=null;
                              baru.kanan=null;
                        }
                        else
                        {
                              baru.kanan=awal;
                        awal.kiri=baru;
                        awal=baru;
                        awal.kiri=null;
                  }
            }
            void tambahBelakang(String NAMA, int UMUR, char JK, String JABATAN)
            {
                                    System.out.println("tambah belakang'"+NAMA+"'dilakukan..");
                                    simpul baru=new simpul();
                                    baru.ngisiSimpul(NAMA, JK, JABATAN, UMUR);
                                    if(awal==null)
                                    {
                                          awal=baru;
                                          akhir=baru;
                                          baru.kiri=null;
                                          baru.kanan=null;
                                    }
                                    else
                                    {
                                          baru.kiri=akhir;
                                    akhir.kanan=baru;
                                    akhir=baru;
                        baru.kanan=null;
                  }
            }
            void tambahTengah(int POSISI, String NAMA, int UMUR, char JK, String JABATAN)
            {
                                    System.out.println("tambah tengah'"+NAMA+"'dilakukan..");
                                    if(awal==null)
                                    {
                                          simpul baru=new simpul();
                                    baru.ngisiSimpul(NAMA, JK, JABATAN, UMUR);
                                          awal=baru;
                                          akhir=baru;
                                          baru.kiri=null;
                                          baru.kanan=null;
                                    }
                                    else
                                    {
                                          int jumlahSimpul= hitungJumlahSimpul();
                                          if(POSISI==1)
                                          tambahDepan(NAMA, UMUR, JK, JABATAN);
                                          else if(POSISI>jumlahSimpul)
                                          tambahBelakang(NAMA, UMUR, JK, JABATAN);
                                          else
                                          {
                                                simpul bantu;
                                                bantu=awal;
                                                int N=1;
                                                while((N<POSISI)&&(bantu!=akhir))
                                                {
                                                      bantu=bantu.kanan;
                                                      N++;
                                                }
                                                simpul baru=new simpul();
                                                baru.ngisiSimpul(NAMA, JK, JABATAN, UMUR);
                                          baru.kiri=bantu.kiri;
                                    baru.kiri.kanan=baru;
                                    baru.kanan=bantu;
                        bantu.kiri=baru;
                  }
            }
      }
      void cetakSenarai()
      {
            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("");
            }
            void hapus(String NAMA)
            {
                  if(awal==null)
                  {
                        System.out.println("senarai kosong, menghapus tidak dapat dilakukan");
                  }
                  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;
            akhir.kanan=null;
}
      else
      {
            simpul bantu;
            bantu=awal;
            boolean ketemu=false;
            while(bantu!=akhir)
            {
                  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+"'tidak ditemukan");
                  }
            }
      }
}
class TugasSenaraiGanda
{
      public static void main(String[] args)
      {
            senarai mahasiswa=new senarai();
      mahasiswa.inisialisasiSenaraiKosong();
      mahasiswa.tambahDepan("Dedi", 15, 'L', "OB");
      mahasiswa.tambahDepan("Cecep", 12, 'L', "Owner");
      mahasiswa.tambahDepan("Ani", 11, 'P', "Direktur");
      mahasiswa.tambahDepan("Abud", 10, 'L', "Keuangan");
      mahasiswa.cetakSenarai();
      mahasiswa.tambahBelakang("Eko", 25, 'L', "Sekretaris");
      mahasiswa.tambahBelakang("Feri", 25, 'L', "Karyawan");
      mahasiswa.tambahBelakang("Gubawan", 32, 'L', "Security");
      mahasiswa.tambahBelakang("Hasan", 19, 'L', "Karyawan");
      mahasiswa.cetakSenarai();
      mahasiswa.tambahTengah(4, "Zaenal", 25, 'L', "Manager");
      mahasiswa.cetakSenarai();
      mahasiswa.hapus("Dedi");
      mahasiswa.cetakSenarai();
}
}




Tidak ada komentar:

Posting Komentar