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("");
}
}
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar