DISUSUN OLEH
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 :
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:
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