class Senarai
{
protected Simpul awal;
protected Simpul akhir;
public void inisialisasiSenaraiKosong()
{
awal=null;
akhir=null;
}
public int hitungJumlahSimpul()
{
int N=0;
Simpul bantu;
bantu=awal;
while(bantu!=null)
{
bantu=bantu.kanan;
N++;
}
return N;
}
void tambahDepan(String nama,int umur)
{
System.out.println("Tambah depan: "+nama+" dilakukan!");
Simpul baru=new Simpul();
baru.ngisiSimpul(nama,umur);
if(awal==null)
{
awal=baru;
akhir=baru;
baru.kanan=null;
}
else
{
baru.kanan=awal;
awal=baru;
}
}
void tambahBelakang(String nama,int umur)
{
System.out.println("Tambah belakang: "+nama+" dilakukan!");
Simpul baru=new Simpul();
baru.ngisiSimpul(nama,umur);
if(awal==null)
{
awal=baru;
akhir=baru;
baru.kanan=null;
}
else
{
akhir.kanan=baru;
akhir=baru;
baru.kanan=null;
}
}
void tambahTengah(int posisi,String nama,int umur)
{
System.out.println("Tambah tengah "+nama+" dilakukan!");
Simpul baru=new Simpul();
if(awal==null)
{
awal=baru;
akhir=baru;
baru.kanan=null;
}
else
{
int jumlahSimpul=hitungJumlahSimpul();
if(posisi==1)
tambahDepan(nama,umur);
else if(posisi>jumlahSimpul)
tambahBelakang(nama,umur);
else
{
Simpul bantu;
bantu=awal;
int N=1;
while((N<posisi-1)&&(bantu!=akhir))
{
bantu=bantu.kanan;
N++;
}
//Simpul baru=new Simpul();
baru.ngisiSimpul(nama,umur);
baru.kanan=bantu.kanan;
bantu.kanan=baru;
}
}
}
void cetakSenarai()
{
System.out.println("Cetak: ");
if(awal==null)
System.out.println("senarai masih kosong!");
else
{
Simpul bantu;
bantu=awal;
while(bantu!=null)
{
bantu.tampilSimpul();
bantu=bantu.kanan;
}
}
System.out.println("");
}
public void hapus(String nama)
{
if(awal==null)
System.out.println("SEnarai masih kosong, Menghapus tidak dapat dilakukan!");
else
{
if(awal==akhir) ///hanya ada satu simpul
{
if(awal.nama.equals(nama))
{
System.out.println("Menghapus "+nama+" dilakukan!");
inisialisasiSenaraiKosong();
}
}
else if(awal.nama.equals(nama))//jika nama ditemukan di awal
{
System.out.println("Menghapus "+nama+" dilakukan!");
awal=awal.kanan;
}
else
{
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 dengan nama "+nama+"tidak ditemukan!");
else
{
System.out.println("Menghapus" +nama+" dilakukan!");
bantu.kanan=bantu.kanan.kanan;
}
}
}
}
}
public class SingleList
{
public static void main(String args[])
{
Senarai mahasiswa=new Senarai();
mahasiswa.inisialisasiSenaraiKosong();
mahasiswa.tambahBelakang("Budi",16);
mahasiswa.tambahBelakang("Anton",17);
mahasiswa.tambahBelakang("Tono",18);
mahasiswa.tambahTengah(3,"Nopri",20);
mahasiswa.cetakSenarai();
}
}
Tidak ada komentar:
Posting Komentar