13 September 2012

pengertian LINKLIST dan contohnya



LINKLIST

Linked list / di sebut juga senarai berantai yaitu penglokasian memori secara dinamis yang digunakan untuk menyimpan data. Pada linked list kita dapat menyimpan data seberapapun yang kita mau.
            Single linked list (senarai berantai tunggal) adalah linked list dimana semua simpul-simpulnya hanya memiliki 1buah penunjuk yang digunakan untuk mengkaitkan diri degan simpul lain yang sejenis yang ada disebelah kanannya didalam sebuah senarai berantai yang sama.

Unsure-unsur pendukung linked list meliputi:
-          Penunjuk/pointer à alat untuk menunjuk sebuah simpul atau tempat kosong (null).
-          Simpul/node à untuk simpul tunggal hanya dapat menunjuk kesimpul yang serupa dengan dirinya yang letaknya disebelah kanannya.
-          Senarai berantai/single linked list à merupakan kiumpulan simpul-simpul yang terhubung satu dengan yang lain.




SIMPUL DAN PENUNJUK.
public class Simpul {
public
        String data;
Simpul kanan;
//konstruktor
Simpul(String d)
{data = d;
}
//fungsi untuk mencetak 'simpul'
void cetakSimpul()
{System.out.print(data);
}
}


SENARAI BERANTAI
public class Senarai {
private
        Simpul awal;
Simpul akhir;
public
        //konstruktor
        Senarai()
{awal = null;
 akhir = null;
}
//fungsi untuk menambah di awal 'senarai'
void tambahAwal(String dd)
{System.out.println("menambah depan " + dd + " dilakukan...");
 Simpul baru = new Simpul(dd);
 if(awal==null)
     akhir=baru;
}
//fungsi untuk menambah di akhir 'senarai'
void tambahAkhir(String dd)
        {System.out.println("menambah belakang " + dd + " dilakukan...");
 Simpul baru = new Simpul(dd);
 if(awal==null)      //jika senarai kosong
     akhir=baru;
 else                //jika sanarai tidak kosong
     akhir.kanan=baru;
 baru.kanan=null;
 akhir=baru;
}
//fungsi untuk menambah ditengah
Boolean tambahTengah(String kunci, String dd)
{ System.out.println("menambah tengah " + dd + " dilakukan...");
  Simpul bantu = awal;
  while(bantu.data != kunci)
  {bantu = bantu.kanan;
   if(bantu == null)
   {System.out.println("---> Nambah " + dd + " Gagal,karena data "+kunci + " tidak ditemukan");
    return false;
   }
  
  }
  Simpul baru = new Simpul(dd);
  if(bantu==akhir)
  {baru.kanan = null;
   akhir.kanan = baru;
   akhir = baru;
  }
  else
  {baru.kanan = bantu.kanan;
   bantu.kanan = baru;
  }
  return true;
}
//fungsi untuk menghapus sebuah simpul di awal 'senarai'
Simpul hapusAwal()
{System.out.println("Menghapus diAWAL senarai dilakukan...");
 Simpul hapus = awal;
 if(awal.kanan == null)    //jika senaraitinggal 1 simpul
     akhir=akhir.kanan;
 awal=awal.kanan;
 return hapus;
}
//fungsi untuk menghapus sebuah simpul di
Simpul hapusAkhir()
{System.out.println("menghapus diAKHIR senarai dilakukan...");
 Simpul bantu = awal;
 while (bantu.kanan != akhir)
     bantu = bantu.kanan;
 Simpul hapus = akhir;
 akhir = bantu;
 akhir.kanan = null;
 return hapus;
}
//fungsi untuk menghapus simpul berdasarkan kata kunci
Simpul hapusPilih(String kunci)
{System.out.println("Menghapus simpul dg kunci dilakukan...");
 Simpul bantu = awal;
 if(bantu.data == kunci)        //data ditemukan di awal
 {awal = awal.kanan;
  return bantu;
 }
 else
 {while(bantu.kanan.data != kunci)
  {bantu = bantu.kanan;
   if(bantu == null)    //data ditemukan di akhir
   {Simpul hapus = akhir;
    akhir = bantu;
    akhir.kanan = null;
    return hapus;
   }
   else     //data ditemukan diengah
   {
       Simpul hapus = bantu.kanan;
       bantu.kanan = hapus.kanan;
       return hapus;
   }
   //fungsi mencetak maju
   void cetakMaju()
   {System.out.println("Mencetak maju : ");
    m bantu = awal;
    while(bantu != null)
    {
        bantu.cetakSimpul();
        bantu = bantu.kanan;
        System.out.print(", ");
    }
    System.out.println(" ");    //ganti baris
   }
  }


ProgramUtamaSenaraiBerantai
public class ProgramUtamaSenaraiBerantai {
public static void main(String args[])
{
    Senarai mahasiswa = new Senarai();
    mahasiswa.tambahAwal("Agung");
     mahasiswa.tambahAwal("Beny");
      mahasiswa.tambahAwal("cecep");
     
      mahasiswa.tambahAkhir("Eko");
       mahasiswa.tambahAkhir("feri");
       mahasiswa.tambahAkhir("gunawan");
       mahasiswa.tambahAkhir("Hasan");
      
       mahasiswa.tambahTengah("Cecep","Dedy");
       mahasiswa.tambahTengah("Parmin","Deni");
      
       mahasiswa.cetakMaju();
       System.out.println("");
      
       mahasiswa.hapusAwal();
        mahasiswa.hapusAkhir();
         mahasiswa.cetakMaju();
           System.out.println("");
          
           mahasiswa.hapusPilih("Dedy");
           mahasiswa.cetakMaju();
             System.out.println("");
}

}

Tidak ada komentar:

Pengikut

Total Tayangan Halaman

selamat datang

pengertian LINKLIST dan contohnya

on 13 September 2012


LINKLIST

Linked list / di sebut juga senarai berantai yaitu penglokasian memori secara dinamis yang digunakan untuk menyimpan data. Pada linked list kita dapat menyimpan data seberapapun yang kita mau.
            Single linked list (senarai berantai tunggal) adalah linked list dimana semua simpul-simpulnya hanya memiliki 1buah penunjuk yang digunakan untuk mengkaitkan diri degan simpul lain yang sejenis yang ada disebelah kanannya didalam sebuah senarai berantai yang sama.

Unsure-unsur pendukung linked list meliputi:
-          Penunjuk/pointer à alat untuk menunjuk sebuah simpul atau tempat kosong (null).
-          Simpul/node à untuk simpul tunggal hanya dapat menunjuk kesimpul yang serupa dengan dirinya yang letaknya disebelah kanannya.
-          Senarai berantai/single linked list à merupakan kiumpulan simpul-simpul yang terhubung satu dengan yang lain.




SIMPUL DAN PENUNJUK.
public class Simpul {
public
        String data;
Simpul kanan;
//konstruktor
Simpul(String d)
{data = d;
}
//fungsi untuk mencetak 'simpul'
void cetakSimpul()
{System.out.print(data);
}
}


SENARAI BERANTAI
public class Senarai {
private
        Simpul awal;
Simpul akhir;
public
        //konstruktor
        Senarai()
{awal = null;
 akhir = null;
}
//fungsi untuk menambah di awal 'senarai'
void tambahAwal(String dd)
{System.out.println("menambah depan " + dd + " dilakukan...");
 Simpul baru = new Simpul(dd);
 if(awal==null)
     akhir=baru;
}
//fungsi untuk menambah di akhir 'senarai'
void tambahAkhir(String dd)
        {System.out.println("menambah belakang " + dd + " dilakukan...");
 Simpul baru = new Simpul(dd);
 if(awal==null)      //jika senarai kosong
     akhir=baru;
 else                //jika sanarai tidak kosong
     akhir.kanan=baru;
 baru.kanan=null;
 akhir=baru;
}
//fungsi untuk menambah ditengah
Boolean tambahTengah(String kunci, String dd)
{ System.out.println("menambah tengah " + dd + " dilakukan...");
  Simpul bantu = awal;
  while(bantu.data != kunci)
  {bantu = bantu.kanan;
   if(bantu == null)
   {System.out.println("---> Nambah " + dd + " Gagal,karena data "+kunci + " tidak ditemukan");
    return false;
   }
  
  }
  Simpul baru = new Simpul(dd);
  if(bantu==akhir)
  {baru.kanan = null;
   akhir.kanan = baru;
   akhir = baru;
  }
  else
  {baru.kanan = bantu.kanan;
   bantu.kanan = baru;
  }
  return true;
}
//fungsi untuk menghapus sebuah simpul di awal 'senarai'
Simpul hapusAwal()
{System.out.println("Menghapus diAWAL senarai dilakukan...");
 Simpul hapus = awal;
 if(awal.kanan == null)    //jika senaraitinggal 1 simpul
     akhir=akhir.kanan;
 awal=awal.kanan;
 return hapus;
}
//fungsi untuk menghapus sebuah simpul di
Simpul hapusAkhir()
{System.out.println("menghapus diAKHIR senarai dilakukan...");
 Simpul bantu = awal;
 while (bantu.kanan != akhir)
     bantu = bantu.kanan;
 Simpul hapus = akhir;
 akhir = bantu;
 akhir.kanan = null;
 return hapus;
}
//fungsi untuk menghapus simpul berdasarkan kata kunci
Simpul hapusPilih(String kunci)
{System.out.println("Menghapus simpul dg kunci dilakukan...");
 Simpul bantu = awal;
 if(bantu.data == kunci)        //data ditemukan di awal
 {awal = awal.kanan;
  return bantu;
 }
 else
 {while(bantu.kanan.data != kunci)
  {bantu = bantu.kanan;
   if(bantu == null)    //data ditemukan di akhir
   {Simpul hapus = akhir;
    akhir = bantu;
    akhir.kanan = null;
    return hapus;
   }
   else     //data ditemukan diengah
   {
       Simpul hapus = bantu.kanan;
       bantu.kanan = hapus.kanan;
       return hapus;
   }
   //fungsi mencetak maju
   void cetakMaju()
   {System.out.println("Mencetak maju : ");
    m bantu = awal;
    while(bantu != null)
    {
        bantu.cetakSimpul();
        bantu = bantu.kanan;
        System.out.print(", ");
    }
    System.out.println(" ");    //ganti baris
   }
  }


ProgramUtamaSenaraiBerantai
public class ProgramUtamaSenaraiBerantai {
public static void main(String args[])
{
    Senarai mahasiswa = new Senarai();
    mahasiswa.tambahAwal("Agung");
     mahasiswa.tambahAwal("Beny");
      mahasiswa.tambahAwal("cecep");
     
      mahasiswa.tambahAkhir("Eko");
       mahasiswa.tambahAkhir("feri");
       mahasiswa.tambahAkhir("gunawan");
       mahasiswa.tambahAkhir("Hasan");
      
       mahasiswa.tambahTengah("Cecep","Dedy");
       mahasiswa.tambahTengah("Parmin","Deni");
      
       mahasiswa.cetakMaju();
       System.out.println("");
      
       mahasiswa.hapusAwal();
        mahasiswa.hapusAkhir();
         mahasiswa.cetakMaju();
           System.out.println("");
          
           mahasiswa.hapusPilih("Dedy");
           mahasiswa.cetakMaju();
             System.out.println("");
}

}

0 komentar:

 
Template Indonesia | NOTE
Aku cinta Indonesia