Jumat, 21 Oktober 2011

single list

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();
    }
}