12/28/2012

Single Linkedlist

DISUSUN OLEH

Nim     : 115410138
Nama   : Hermawan
                                                     

PERTEMUAN KE-5

SINGLE LINKEDLIST
( SENARAI BERANTAI TUNGGAL)
A.    Pembahasan
import java.util.Scanner; 
class simpul// nama kelas
{
    protected
    String nama;// variable nama dengan tipe string
    int umur;// variable umur dengan tipe interger
    simpul kanan;// simpul Tunggal yang hanya mempunyai petunjuk kanan

public Sebuah Method yang memiliki
    void ngisiSimpul(String NAMA, int UMUR)variable yaitu :
    {
        nama = NAMA;nama = NAMA;
        umur = UMUR;umur = UMUR;
    }
 void cetakSimpul()
 {
     System.out.print (nama + "-" + umur + " ");Cetak Simpul
 } dengan variable
}nama dan umur


class senarai // kelas senarai
{
protected
    simpul awal;Simpul  //diawal dan simpul di akhir
    simpul akhir;

public
    void inisialisasiSenaraiKosong()Method   >>inisialisasiSenaraiKosong
    {
        awal = null;     >>dengan awal adalah null dan
        akhir = null;akhir >>adalah null
    }


Penjelasan:

Class senarai terdiri dari Simpul Awal dan simpul akhir dimana simpul awal merupakan null(nol)=simpul kosong dan diakhiri dengan simpul akhir yang sam dengan null juga(kosong).

int hitungJumlahSimpul()
    {
        int N = 0;
        simpul bantu;
        bantu = awal;
        while (bantu != null)
        {Method hitungJumlahSimpul
            bantu = bantu.kanan;
            N++;
        }
        return (N);
    }

Penjelasan:

            Variable N sama dengan nol (0) . PerumpamaanpertamayaituSimpul bantu merupakansimpul yang beradadiawal(Simpul bantu = awal;).While(bantu.data !=null)merupakanpenjabarandimananullakanditemukan, bantu adalah bantu yang berada di kanan (bantu = bantu.kanan;). N tambah 1( N++). Kembalikan ke variable 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)                 .. // jika senarai masih kosong
        {
            awal = baru;
            akhir = baru;Method tambahDepan
            baru.kanan = null;
        }
else// jika senarai tidak kosong
        {
            baru.kanan = awal;
            awal = baru;
        }
    }

Penjelasan:

                        Sciptdiatasdigunakanuntukmenambahkandi depan. simpul baru = new simpul();digunakanuntukmendefinisikanbahwasimpulbarusamadengan new simpul,yang dimaksut simpul baru disini adalah variable NAMA, UMUR. Jika awal sama dengan null (0) maka list masih kosong. Dengan awal = baru; dan akhir = baru; varakanmengikat data disebelahkanannyayaituvarkosong(baru.kanan = null;). Tetapi jika tidak maka var disebelahn kanan yaitu var awal, dan awal adalah var 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;  >>Merupakan Method tambahBelakang
baru.kanan = null;
        }
        else
        {
            akhir.kanan = baru;
            akhir = baru;
            baru.kanan = null;
        }
    }

Penjelasan:

                        Scipt diatas digunakan untuk menambahkan di belakang digunakan untuk mendefinisikan bahwa simpul baru sama dengan new simpul, yang dimaksut simpul baru disini adalah variable NAMA, UMUR. Jika awal sama dengan null (0) maka list masih kosong. Dengan awal = baru; dan akhir = baru; varakanmengikat data disebelahkanannyayaituvarkosong(baru.kanan = null;). Tetapi jika tidak maka var disebelahn kanan yaitu var awal, dan awal adalah var baru.


Method tambah tengah
    void tambahTengah(int POSISI, String NAMA, int UMUR)// Method tambah
       tengah
    {
System.out.println
("tambah tengah '" +NAMA+ "'dilakukan.."; ..cetak tambah tengah


if (awal == null){//Jikaawal samadengan null (0)
simpul baru = new simpul();//simpulbarusamadengan new simpul
baru.ngisiSimpul(NAMA, UMUR);//simpul Baru berisi variable NAMA, UMUR
awal = baru;//data awal sama dengan baru
akhir = baru;//data akhir sama dengan baru
baru.kanan = null;//varakanmengikat data disebelahkanannya
        }yaituvarkosong

Jika tidak maka
else
        {
int jumlahSimpul = hitungJumlahSimpul();//Jumlah Simpul

if (POSISI == 1) {     //Jika Posisi sama dengan 1
tambahDepan(NAMA, UMUR);// Maka variable NAMA, UMUR tambah depan
}

else if (POSISI > jumlahSimpul)// Jika Posisi kurang dari jumlah simpul
{
tambahBelakang(NAMA, UMUR);// Maka variable NAMA, UMUR tambah belakang
}
else{ //jika tidak
simpul bantu = new simpul();  //simpul bantusamadengan new simpul
bantu = awal;// simpul bantu berada di awal
int N = 1;N =1, // yang bertipe Interger
while // saat N kurang dari posisi kurang dari 1
((N< POSISI-1) && bantu != akhir){ // dan bantu merupakan penjabaran akhir
bantu = bantu.kanan; //varakanmengikat data disebelahkanannya
N++;} //N++ (N+1)
simpul baru = new simpul(); // simpulbarusamadengan new simpul
baru.ngisiSimpul(NAMA, UMUR); // simpul Baru berisi variable NAMA, UMUR
baru.kanan = bantu.kanan;// simpul baru adalah simpul kanan bantu
bantu.kanan = baru;// simpul kanan sama dengan simpul baru
            }
        }
    }

 void cetakSenarai()// void setakSenarai
 {
     System.out.println("CETAK: ");// cetak
     if (awal == null)// jika awal sama dengan null(0)
     {
         System.out.print(".... SENARAI KOSONG....");// cetak
     }
else//  jika tidak
     {
        simpul bantu = new simpul();// simpul bantu sama dengan new simpul
        bantu = awal;// bantu sama dengan simpul awal
        while (bantu != null)// merupakan penjabaran bantu akan ditemukan
 null
        {
            bantu.cetakSimpul();// bantu cetak simpul
            bantu = bantu.kanan;// dengan bantu berada di kanan
        }
    }
    System.out.println(""); // cetak
 }

void hapus(String NAMA)// scipt untuk menghapus Nama bertipe String
 {
     if (awal == null)// jika awal sama dengan null maka
     {
System.out.println
("Senarai kosong,
menghapus tidak dapat dilakukan"); //cetak Senarai kosong,
     }menghapus tidak dapat dilakukan

else             // jika tidak maka
     {
        System.out.println
("menghapus '" + NAMA + "' dilakukan.."); // cetak menghapus '" + NAMA + "'
  dilakukan..

 if (awal.nama.equals(NAMA))// jika nama sama
        {
            awal = awal.kanan;// maka awal sama dengan awal di kanan              
        }
else{// jika tidak
simpul bantu;// simpul bantu
bantu = awal;// bantu sama dengan awal
while (bantu.kanan.nama.equals(NAMA)==false)// selama bantu. kanan. nama.
     equals(NAMA)== maka salah.



{
bantu = bantu.kanan;// bantu sama dengan batu kanan
if (bantu.kanan == null) // jika bantu kanan sama dengan null (0)
break;}
if ((bantu == akhir) && (NAMA.equals(akhir.nama)==false))
{
                System.out.println("data '" + NAMA + "' yang anda maksud tidak ada dalam list");
            }
            else
            {
                System.out.println("Menghapus "+NAMA+" dilakukan...");
                bantu.kanan = bantu.kanan.kanan;}
//jika data ditemukan, makapenghapusanakandilakukan, jikatidakakanmunculinformasibahwasimpultidakditemukan.

Progaram Utama

class senaraitunggal// Nama Kelas yaitu Senaraitunggal, dan program harus disimpan
{dengan nama Seneraitunggal, karena merupkan Program utama.
    public static void main(String[] args)//  Program main
    {
senarai mahasiswa = new senarai();// senerai mahasiswa sama dengan new senarai
mahasiswa.inisialisasiSenaraiKosong();//Mengisi(mengintalasi) mahasiswa

        mahasiswa.tambahDepan("Dedi",15);
        mahasiswa.tambahDepan("Cecep",12);
        mahasiswa.tambahDepan("Budi",11);MenambahDepan Mahasiswa
        mahasiswa.tambahDepan("Abud",10);dengan variable Nama, dan usia
      mahasiswa.cetakSenarai();// scipt unutk mencetak CetakSenarai
    }
}
ü  Maka Hasil Output di Praktik pertama adalah :


ü  Praktik 2
tambahDepan Program dengan :
mahasiswa.tambahBelakang("Eko",25);
mahasiswa.tambahBelakang("Feri",25);
mahasiswa.tambahBelakang("Gunawan",32);  //MenambahBelakang Mahasiswa
mahasiswa.tambahBelakang("Hasan",19); // dengan variable Nama, dan usia
mahasiswa.cetakSenarai();// // CetakSenarai


Penjelasan :
Tambahbelakang dengan Mahasiswa nama Eko berumur 25 tahun, Tambahbelakang dengan Mahasiswa nama feri berumur 25 tahun. Tambahbelakang dengan Mahasiswa nama Gunawan berumur 32 tahun, Tambahbelakang dengan Mahasiswa nama HasAN berumur 19 tahun. Script ini akan mengimplementasikan ke method tambahbelakang
void tambahBelakang(String NAMA, int UMUR)
.
.
Sehingga Hasil Output :
ü  Praktik 3
tambahtengah Program dengan :
Menambah nama Zaenal, dengan prorgam :

mahasiswa.tambahTengah(4,"Zaenal",25);// tambah tengah dengan Nama Zaenal dengan
umur 25 tahun

mahasiswa.cetakSenarai();// Cetak senarai

    }
}

Program diatas akan menginplementasikan ke Method Tambahtengah,
void tambahTengah(int POSISI, String NAMA, int UMUR)
..
..
Sehingga hasil outputnya adalah :





 ü  Praktik 4

Mengahapus senarai
                                mahasiswa.tambahHapus ("Parmin");// Mengahpus mahasiswa Yang bernama
  Parmin
                                mahasiswa.cetakSenarai();// Cetak senerai

}
}
Menghapus mahasiswa dengan nama Parmin Program diatas akan menginplementasikan ke Method penghapusan data ( jika data ditemukan maka akan dihapus), yaitu di scipt
..
..
if (bantu.kanan == null)
break;}
if ((bantu == akhir) && (NAMA.equals(akhir.nama)==false))
{
                System.out.println("data '" + NAMA + "' yang anda maksud tidak ada dalam list");
            }
            else
            {
                System.out.println("Menghapus "+NAMA+" dilakukan...");
                bantu.kanan = bantu.kanan.kanan;}

Sehingga Hasil Outputnya adalah:

 >> Ternyata Data tidak ditemukan










A.   TUGAS
Buatlah sebuah fungsi untuk mencari sebuah nama, jika nama yang dimaksudkan ditemukan di dalam senarai. Fungsi yang Anda buat harus dapat menginformasikan bahwa nama yang dicari ditemukan. Namun jika nama yang dicari tidak ditemukan, fungsi Anda harus dapat memberikan informasi bahwa data yang dicarikan tidak ada di dalam senarai ?
Jawab :
  void Cari (String NAMA) {
    if (awal==null) {
        System.out.println("Senarai Kosong, Menghapus tidak bisa dilakukan");
    }
    else {
        if (awal==akhir) {
            if(awal.nama.equals(NAMA)) {
                System.out.println(NAMA+ " ditemukan. . ");
//   inisialisasiSenaraiKosong();
            }
            else
                System.out.println("data" +NAMA+ " tidak ditemukan");
            }
        else if (awal.nama.equals(NAMA)){
            System.out.println("data : " +NAMA+ " ditemukan");
                }
        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" +NAMA+ " tidak ditemukan. .");
        }
            else {
                System.out.println("data : " +NAMA+ "ditemukan");     }                          }
    }
}
  
HASIL OUTPUT :
D. LISTING
ü Terlampir


0 komentar:

Posting Komentar