30
|
LAPORAN PRAKTIKUM
STRUKTUR DATA
Modul 06
Disusun
Oleh :
HERI PURNAMA
125410101
TI 02
UPT LABORATORIUM
Sekolah Tinggi Manajemen Informatika dan Komputer
AKAKOM
Yogyakarta
2013
DOUBLE LINKEDLIST
(SENARAI BERANTAI GANDA)
1).PEMBAHASAN
v Listing Program
Class simpul
{
protected
String nama;
int umur;
simpul kiri;
simpul kanan;
public
void ngisiSimpul(String NAMA, int UMUR)
{
nama = NAMA;
umur = UMUR;
}
Void cetakSimpul()
{
System.out.print
(nama + "-" + umur + " ");
}
}
|
Ø
Baris-baris sintak program diatas adalah Merupakan pendeklarasian
class Simpul,yang mana untuk mengakses
variabel digunakan keyword protected ,keyword protected sendiri adalah salah satu komponen
deklarasi method yakni modifier.modifier digunakan untuk mengontrol kelas-kelas lain yang mempunyai akses ke
field anggota.Dalam kelas simpul terdapat dua method
yakni :
o
Method “ngisiSimpul” mempunyai parameter nama yang
bertipe string dan umur yang bertipe integer. Dimana variabel nama disamakan dengan variabel
NAMA, dan variabel umur disamakan dengan
variabel UMUR.
o
Method “cetakSimpul” tanpa parameter dengan perintah
untuk menampilkan nama + "-" untuk memanggil variabel nama dan + umur + "
" untuk
memanggil variabel umur.
Class
senarai
{
protected
simpul awal;
simpul
akhir;
public
void inisialisasiSenaraiKosong()
{
awal = null;
akhir = null;
}
Int hitungJumlahSimpul()
{
int
N = 0;
simpul
bantu;
bantu
= awal;
while (bantu != null)
{
bantu = bantu.kanan;
N++;
}
return (N);
}
|
Ø Sintak program diatas adalah pendeklarasian kelas senarai, yang mana
mempunyai
pendeklarasian variabel simpul awal dan simpul akhir dan menggunakan modifier dengan tipe
protected, dimana untuk mengakses variabel digunakan keyword proted.Dalam program diatas terdapat method
yakni:
o Method “inisialisasiSenaraiKosong” tanpa parameter bersifat void, dengan
nilai ketetapan nilai awal dan akhir adalah null.
o Method “hitungJumlahSimpul” tanpa
parameter dengan nilai variabel N yang mempunyai nilai bawaan awal adalah 0,
dimana N bertipe integer. Method ini juga mendeklarasikan variabel simpul bantu,dimana
nilai variabel bantu sama dengan nilai simpul awal. Dalam method ini terdapat juga
perulangan yakni perulangan while dimana digunakan untuk perintah perulangan
bila variabel bantu tidak sama dengan null, maka variabel bantu menjadi ‘bantu.kanan’
kemudian nilai N bertambah satu. Sehingga melakukan pengembalian terhadap nilai pada variabel N.
Void tambahDepan(String
NAMA, int UMUR)
{
System.out.println("tambahdepan
'" +NAMA+ "' dilakukan..");
simpulbaru = new simpul();
baru.ngisiSimpul(NAMA, UMUR);
if (awal == null) //***jikasenaraimasihkosong***\\\
{
awal = baru;
akhir = baru;
baru.kiri = null;
baru.kanan = null;
}
else //***jikasenaraitidakkosong***\\
{
baru.kanan
= awal;
awal.kiri =baru;
awal = baru;
awal.kiri=null;
}
}
|
Ø
Perintah Method “tambahDepan” mempunyai parameter NAMA bertipe String dan
UMUR bertipe integer. Terdapat juga perintah untuk menampilkan teks “tambah
depan ” yang diambil dari variabel NAMA dan kelanjutan teksnya adalah
“dilakukan . . .” method ini juga melakukan penciptaan sebuah object simpul baru = new simpul(); dimana objek baru.ngisiSimpul diambil dari nilai variabel NAMA, dan UMUR. Sehingga terwujud
suatu kondisi :
o
saat nilai senarai masih
kosong maka nilai awal = null maka nilai variabel awal sama dengan nilai baru dan akhir sama dengan nilai baru,
sehingga nilia variabel baru.kanan akan
sama dengan null dan nilai variabel baru.kiri juga akan sama dengan null atau
dengan kata lain akan ditujukkan ke null.
o
Bila kondisi senarai tidak kosong maka akan mempunyai nilai
variabel baru.kanan sama dengan nilai awal,awal.kiri akan ditujjukaan ke baru,nilai
variabel awal sama dengan baru dan nilai awal.kiri ditujukkan ke null.
voidtambahBelakang(String
NAMA, int UMUR)
{
System.out.println("tambahbelakang
'" +NAMA+ "'dilakukan..");
simpulbaru = new simpul();
baru.ngisiSimpul(NAMA,
UMUR);
if (awal == null)
{
awal = baru;
akhir = baru;
baru.kiri = null;
baru.kanan = null;
}
else //***jikasenaraitidakkosong***\\
{
baru.kiri = akhir;
akhir.kanan = baru;
akhir = baru;
baru.kanan = null;
}
}
|
Ø Method “tambahBelakang”
mempunyai parameter NAMA bertipe String dan UMUR bertipe integer.
Terdapat juga perintah untuk menampilkan teks “tambah belakang ” yang diambil
dari variabel NAMA dan kelanjutan teksnya adalah “dilakukan . . .” method ini
juga melakukan penciptaan sebuah object simpul baru = new simpul(); dimana objek baru.ngisiSimpul diambil dari nilai variabel NAMA, dan UMUR. Sehingga terwujud
suatu kondisi :
o saat nilai senarai masih kosong saat nilai awal = null maka nilai variabel awal sama dengan nilai baru dan akhir sama dengan nilai baru, sehingga nilia variabel
baru.kanan akan sama dengan null dan baru.kiri ditujukkan ke null.
o Bila kondisi senarai tidak kosong maka mempunyai nilai baru.kiri sama dengan akhir,nilai variabel akhir.kanan sama dengan baru,nilai variabel
akhir sama dengan nilai variabel baru, dan nilai variabel baru.kanan sama dengan null.
voidtambahTengah(int POSISI, String NAMA, int UMUR)
{
System.out.println("tambahtengah
'" +NAMA+ "'dilakukan..");
if (awal == null)
{
simpulbaru
= new simpul();
baru.ngisiSimpul(NAMA, UMUR);
awal = baru;
akhir = baru;
baru.kiri = null;
baru.kanan = null;
}
else
{
intjumlahSimpul
= hitungJumlahSimpul ();
if (POSISI==1)
tambahDepan
(NAMA, UMUR);
else if (POSISI
>jumlahSimpul)
tambahBelakang
(NAMA, UMUR);
else
{
simpul
bantu ;
bantu = awal;
int N = 1;
while ((N
|
{
bantu
= bantu.kanan;
N++;
}
simpulbaru = new simpul ();
baru.ngisiSimpul (NAMA,
UMUR);
baru.kiri = bantu.kiri;
baru.kiri.kanan = baru;
baru.kanan = bantu;
bantu.kiri = baru;
}
}
}
Ø Perintah Method “tambahTengah” dengan parameter dimana variabel POSISI bertipe
integer, NAMA bertipe string, dan UMUR bertipe integer. Terdapat juga perintah
untuk menampilkan teks “tambah tengah ” yang diambil dari variabel NAMA dan
kelanjutan teksnya adalah “dilakukan . . .” Sehingga terwujud suatu kondisi :
o
Saat kondisi nilai
senarai masih kosong maka method ini melakukan penciptaan sebuah object simpul baru = new simpul(); dimana objek baru.ngisiSimpul diambil dari nilai variabel NAMA,
dan UMUR. jika nilai awal = null maka nilai variabel awal sama dengan nilai
variabel baru dan nilai variabel akhir sama
dengan nilai variabel baru,nilai variabel baru.kiri ditujukkan ke null,dan nilai
variabel baru.kanan ditujukkan ke null.
o
Saat kondisi nilai nilai senarai
tidak kosong maka dipangillah method jumlahSimpul yang mana nilai method ini sama
dengan method hitungJumlahSimpul dimana method hitungJumlahSimpul tanpa parameter.Dan mempunyai suatu kondisi
menggunakan if - else,
·
Jika variabel POSISI itu sama dengan 1 maka panggilah fungsi
tambahDepan yang berparameter NAMA dan UMUR.
·
Jika variabel
POSISI itu lebih besar dari pada nilai jumlahSimpul,maka dipanggilah fungsi
tambahDepan yang berparameter NAMA dan UMUR.
·
Jika dalam kondisi lainya maka nilai variabel simpul
bantu dimana bantu adalah nilai awal dan N diberi nilai ketetapan 1. Sehingga
terjadi perulangan while apabila nilia N itu kurang dari nilai POSISI dikurangi
1 dan nilai variabel bantu tidak sama dengan nilai akhir. Didalam
perulangan ini nilai variabel bantu samadengan bantu.kanan, sehingga nilai N
akan bertamabah satu terus. Dalam kondisi ini juga terdapat suatu penciptaan sebuah object simpul baru = new simpul(); dimana objek
baru.ngisiSimpul(diambil dari variabel NAMA, dan UMUR). Sehingga nilai
baru.kiri sama dengan bantu.kiri,nilai variabel
baru.kiri.kanan sama dengan nilai baru,nilai baru.kanan sama dengan
bantu dan nilai bantu.kiri sama dengan nilai baru.
voidcetakSenarai ()
{
System.out.print
("CETAK : ");
if (awal == null)
System.out.print
("...SENARAI KOSONG...");
else
{
simpul bantu;
bantu = awal;
while (bantu !=
null)
{
bantu.cetakSimpul();
bantu =
bantu.kanan;
}
}
System.out.println
("");
}
|
Ø
Perintah Method “cetakSenarai” tanpa
parameter dimana didalamnya terdapat perintah untuk menampilkan mencetak “CETAK
: “. Dalam perintah ini ada beberapa
kondisi yaitu
o
Saat kondisi senarai
masih kosong maka nilia awal = null.Dan perintah untuk menampilkan kalimat “. .
.SENARAI KOSONG. . .”
o
Saat kondisi senarai
tidak kosong maka nilai variabel simpul bantu, dimana bantu sama dengan nilai
awal sehingga terdapat perulangan while dengan nilai bantu tidak sama dengan
null. Didalam perulangan terdapat pemanggilan fungsi bantu.cetakSimpul, dimana
bantu samadengan nilai bantu.kanan.
voidhapus(String NAMA)
{
if (awal ==
null)
{
System.out.println
("senaraikosong, menghapustidakdapatdilakukan");
}
else
{
if
(awal.nama.equals (NAMA))
{
System.out.println ("menghapus "+NAMA+"
dilakukan..");
if (awal ==
akhir)
inisialisasiSenaraiKosong();
else
{ awal = awal.kanan;
awal.kiri
= null;
}
}
else if
(awal.nama.equals(NAMA))
{
System.out.println
("menghapus "+NAMA+" dilakukan..");
akhir =
akhir.kiri;
awal = awal.kanan;
}
else
{
simpul
bantu;
bantu = awal;
booleanketemu = false;
while (bantu!=akhir)
//while(bantu.kanan.nama != HNAMA)
{ if (bantu.nama.equals (NAMA))
{ System.out.println("menghapus
"+NAMA+"dilakukan.");
ketemu = true;
bantu.kanan.kiri = bantu.kiri;
bantu.kiri.kanan = bantu.kanan;
break;
}
bantu=bantu.kanan;
}
if (ketemu==false)
System.out.println ("data ' "+ NAMA + "''
tidakditemukan");
}
}
}
}
|
Ø
Perintah Method “hapus” dengan parameter NAMA
yang bertipe string. Sehingga terwujud suatu kondisi:
o
Saat kondisi senarai
kosong maka tercipta nilai awal = null. Dan
perintah untuk menampilkan kalimat “.Senarai kosong, menghapus tidak dapat
dilakukan.
o
Saat kondisi senarai
tidak kosong maka akan menciptakan suatu kondisi lagi yakni:
ü
Jika ditemukan diawal maka NAMA dari nilai
awal.nama.equals .Dan perintah untuk
menghapus data nama adalah kata “menghapus” itu didapat dari variabel
NAMA dan “dilakukan . . .” dimana nilai awal sama dengan awal.kanan. Disisinipun
terjadi perintah kondisi lagi bila:
·
Simpul hanya ada satu buah maka ditetapkan
kondisi nilai awal sama dengan akhir,itu didapat dari fungsi
inisialisasiSenaraiKosong.
·
Jika simpul adanya lebih dari satu maka
diciptakan kondisi yakni bila awal sama dengan awal.kanan dan awal.kiri
ditujukkan ke null.
ü
Jika ditemukan diakhir maka NAMA dari nilai akhir.nama.equals
.Dan perintah untuk menghapus
data nama adalah kata “menghapus” itu didapat dari variabel NAMA dan “dilakukan . . .”
dimana nilai akhir sama dengan akhir.kiri dan akhir.kanan ditujukkan ke null.
ü
Apabila nama tidak ditemukan diawal maupun
diakhir maka untuk menghapus nama apabila tidak ada nama didalam list,maka
tercipta sintak yakni simpul bantu apabila bantu sama dengan awal maka terlebih
dahulu menetapkan kondisi yaitu ketemu sama dengan false dengan nilai dari tipe
data Boolean.Dan menggunakan perulanganya yakni while dengan kondisi akan
berakhir bila ditemukan bahwa bantu tidak sama dengan akhir.Dari perulangan ini
tercipta kondisi lagi yakni:
·
JIka NAMA dari nilai bantu.nama.equals ini
(untuk apabila nama ditemukan diawal) Maka perintah untuk menghapus data nama adalah kata “menghapus” itu
didapat dari variabel NAMA dan “dilakukan . . .” dimana kondisi ketemu sama
dengan true,bantu.kanan.kiri sama dengan bantu.kiri , bantu.kiri.kanan sama
dengan bantu.kanan lalau prose berhenti karena adanya kondisi break untuk
mengakhiri program ini.Lalu bantu akan menetapkan nilai sama dengan
bantu.kanan.
·
Jika kondisi ketemu sama dengan false maka
system akan memberi tahu bahwa : apabila tidak ada nama didalam list, maka
tampilkan kata “data” diikuti nama dari variabel NAMA dan dilanjutkan kata
“tidak diteukan.” Sehingga bisa dibaca misal “data si A tidak ditemukan”
Class
senaraiganda
{
public
static void main(String[]args)
|
Ø Pernyataan diatas digunakan untuk memulai program dengan method main. Kata kunci
void di depan main merupakan keharusan pada bahasa java.
senaraimahasiswa
= new senarai();
mahasiswa.inisialisasiSenaraiKosong();
|
Ø
Program diatas adalah bagian utama dari beberapa method
atau fungsi yang sudah saya bahas disebelumnya, dengan nama class
senaraiTunggal lah program ini disimpan,
karena ini adalah merupakan bagian program utama. Kemudian terdapat pendeklarasian public untuk
melakukan pengoperasian pada senarai dimana kita dapat melakukan atau
memberikan perintah menambah, mencetak, dan menghapus data disini. Penciptaan
objek untuk senarai mahasiswa yaitu : “senarai mahasiswa = new senarai();
·
Praktikum 2
Pada praktikum 2
menambahkan perintah untuk mencetak senarai
dan menambah dari depan, yaitu :
mahasiswa.tambahDepan("Herii Purnama",
125410101);
mahasiswa.tambahDepan("Cecep",
16);
mahasiswa.tambahDepan("Budi",
17);
mahasiswa.tambahDepan("Abud",
18);
mahasiswa.cetakSenarai();
|
Hasil Output:
Ø
Deretan nama yang mundul adalah Heri
Purnama,Cecep,Budi dan abud.
Ø jadi yang tampil hanya”
tambah depan ‘Herii Purnama’ dilakukan. . . “ , karena oleh method
tambahDepan hanya memberikan perintah untuk memanggil variabel NAMA saja.
Perintah “mahasiswa.cetakSenarai();” ini untuk mencetak nama
dan umur dari mahasiswa itu, karena sudah dideklarasikan pada method
cetakSenarai. Penampilan cetaknya berawal dari abud sampai Herii Purnama.
·
Praktikum 3
Pada praktikum 3 menambahkan perintah untuk mencetak senarai dan menambah dari belakang , yaitu :
mahasiswa.tambahBelakang("Eko",25);
mahasiswa.tambahBelakang("Feri",25);
mahasiswa.tambahBelakang("Gunawan",32);
mahasiswa.tambahBelakang("Hasan",19);
mahasiswa.cetakSenarai();
|
·
HASIL OUTPUT :
Ø
Deretan nama nya adalah Herii
Purnama,cecep,budi,abud,eko,feri,gunawan,hasan
Ø Perintah diatas
hampir sama dengan perintah mahasiswa.tambahDepan , hanya saja beda nama dan umur data
mahasiswa, sehingga penjelasanya sama. Hanya saja pada tampilan cetak kedua ,
ini yang dicetak seluruh data mahasiawa yang dimasukan, karena pada method
cetakSenarai sudah jelas , untuk
pencetakanya dari nilai data awal sampai perulangan data bantu paling
kanan (dalam artian untuk mencetak semua data mahasiswa yang ada pada program
utama). Pencetakanya dari abud sampai Herii Purnama berlanjut ke Eko sampai
Hasan.
·
Praktikum 4
Pada praktikum 4 menambahkan perintah untuk mencetak senarai dengan menambah data ditengah , yaitu :
mahasiswa.tambahTengah(4,"Zaenal",25);
mahasiswa.cetakSenarai();
|
·
HASIL OUTPUT :
Ø Yang
terjadi pada hasil running adalah zaenal berada pada posisis indeks ke-3
diantara budi dan heri purnama.
Ø Pada
indeks ke-3 diantara budi dan herii purnama.
Ø Ini bisa terjadi karena nama yang telah dimasukkan telah
ditentukan pada method tambah tenggah yang telah dijelaskan diawal tadi.
·
Praktikum 5
Pada praktikum 5 menambahkan perintah untuk hapus data si Herii Purnama, yaitu :
mahasiswa.hapus("Herii
Purnama");
mahasiswa.cetakSenarai();
|
·
HASIL OUTPUT :
Ø
Program diatas merupakan perintah untuk
menghapus data mahasiswa yang benama Herii Purnama, maka setelah dilakukan
penghapusan data mahasiswa yang bernama Herii Purnama, dapat kita lihat pada
hasil CETAK nya, terlihat bahwa Herii Purnama sudah tidak ada pada daftar data
senarai. Pemanggilan perintah hapus pada method hapus.
·
Praktikum 6
Pada Pada
praktikum 6 menambahkan perintah untuk hapus data si Parmin, yaitu :
mahasiswa.hapus("Parmin");
mahasiswa.cetakSenarai();
|
·
HASIL OUTPUT :
Ø
Program diatas adalah perintah untuk menghapus data mahasiswa yang bernama Parmin, terdapat
tampilan bahwa “data ‘Parmin’ yang anda maksud tidak ada dalam list”. Hal ini
dikarenakan program ini tidak mengenal data mahasiswa yang bernama Parmin,
sehingga menampilkan perintah tersebut. Sehingga tampilan mencetak tetap sama
pada hasil output program sebelumnya
2).Latihan
1.
· Listing
void cetakSenarai()
{
System.out.print ("CETAK : ");
if (awal==null) //***jika senarai masih kosong***\\
System.out.print ("....senarai kosong...");
else
//***jika senarai tidak kosong***\\
{
simpul bantu;
bantu = akhir;
while (bantu != null)
{
bantu.cetakSimpul();
bantu = bantu.kiri;
}
}
System.out.println("");
}
|
·
Running
Cetak Mundur
Cetak Maju
Ø Dari program diatas terlihat bahwa pada hasil outputnya
adalah bila tercetak dari depan dengan urutan nama nya adalah
(abud,budi,cecep,Herii Purnama) sedang bila dicetak mundur urtutan namanya
berubah menjadi(Herii Purnama,cecep,abud) ini dikarenakan perintah ini:
Ø Sebelum bantu =
awal; bantu = bantu.kanan; (cetak depan)
Ø Sesudah bantu = akhir; bantu = bantu.kiri; (cetak belakang)
2.
Dengan menambah
program method dibawah ini kedalam program
Dan pada program utama di
entri sintak yang ingin dicari contoh:
Mencari data : mahasiswa.mencariData("cecep",12,'L');
·
Listing
void
mencariData(String NAMA, int UMUR,char JK)
{
{
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+" ditemukan");
}
if
((bantu == akhir) && (NAMA.equals (akhir.nama) == true))
{
System.out.println
("data "+NAMA+" tidakditemukan");
}
}
}
|
·
Running
3).Tugas
·
Listing Program
class simpul
{
protected
String nama;
int umur;
char jk;
simpul kiri;
simpul kanan;
public
void ngisiSimpul(String NAMA, int UMUR,char
JK)
{
nama
= NAMA;
umur
= UMUR;
jk = JK;
}
void cetakSimpul()
{
System.out.println("nama
:"+nama + " " +"Umur :"+umur +" "+"JK
:"+jk);
}
}
class senarai
{ protected
simpul awal;
simpul
akhir;
public
void
inisialisasiSenaraiKosong()
{
awal
= null;
akhir = null;
}
int hitungJumlahSimpul()
{ int N = 0;
simpul bantu;
bantu
=awal;
while (bantu !=null)
{ bantu = bantu.kanan;
N++;
}
return
(N);
}
void tambahDepan(String NAMA, int UMUR,char
JK)
{
System.out.println("tambahdepan
'" +NAMA+ "' dilakukan..");
simpul
baru = new simpul();
baru.ngisiSimpul(NAMA,
UMUR,JK);
if (awal == null)
//***jikasenaraimasihkosong***\\\
{
awal = baru;
akhir = baru;
baru.kiri = null;
baru.kanan
= null;
}
else //***jikasenaraitidakkosong***\\
{
baru.kanan
= awal;
awal.kiri
=baru;
awal
= baru;
awal.kiri=null;
}
}
void tambahBelakang(String NAMA, int UMUR,char
JK)
{
System.out.println("tambahbelakang
'" +NAMA+ "'dilakukan..");
simpul
baru = new simpul();
baru.ngisiSimpul(NAMA,
UMUR,JK);
if (awal == null)
{
awal = baru;
akhir = baru;
baru.kiri = null;
baru.kanan
= null;
}
else //***jikasenaraitidakkosong***\\
{
baru.kiri = akhir;
akhir.kanan
= baru;
akhir = baru;
baru.kanan = null;
}
}
void tambahTengah(int POSISI, String NAMA,
int UMUR,char JK)
{
System.out.println("tambahtengah
'" +NAMA+ "'dilakukan..");
if
(awal == null)
{
simpul
baru = new simpul();
baru.ngisiSimpul(NAMA,
UMUR,JK);
awal = baru;
akhir = baru;
baru.kiri = null;
baru.kanan = null;
}
else
{
int
jumlahSimpul = hitungJumlahSimpul ();
if
(POSISI==1)
tambahDepan
(NAMA, UMUR,JK);
else
if (POSISI >jumlahSimpul)
tambahBelakang
(NAMA, UMUR,JK);
else
{
simpul bantu ;
bantu
= awal;
int
N = 1;
while
((N
|
{
bantu =
bantu.kanan;
N++;
}
simpul
baru = new simpul ();
baru.ngisiSimpul
(NAMA, UMUR,JK);
baru.kiri = bantu.kiri;
baru.kiri.kanan
= baru;
baru.kanan = bantu;
bantu.kiri =
baru;
}
}
}
void
cetakSenarai()
{
System.out.print ("CETAK :
");
if (awal==null)
//***jikasenaraimasihkosong***\\
System.out.print
("....senaraikosong...");
else
//***jikasenaraitidakkosong***\\
{
simpul bantu;
bantu
= awal;
while
(bantu != null)
{
bantu.cetakSimpul();
bantu
= bantu.kanan;
}
}
System.out.println("");
}
void hapus(String NAMA)
{
if
(awal == null)
{
System.out.println
("senaraikosong, menghapustidakdapatdilakukan");
}
else
{
if
(awal.nama.equals (NAMA))
{
System.out.println ("menghapus "+NAMA+"
dilakukan..");
if
(awal == akhir)
inisialisasiSenaraiKosong();
else
{ awal = awal.kanan;
awal.kiri
= null;
}
}
else
if (awal.nama.equals(NAMA))
{
System.out.println
("menghapus "+NAMA+" dilakukan..");
akhir
= akhir.kiri;
awal
= awal.kanan;
}
else
{
simpul
bantu;
bantu = awal;
boolean ketemu = false;
while (bantu!=akhir) //while(bantu.kanan.nama != HNAMA)
{ if (bantu.nama.equals (NAMA))
{ System.out.println("menghapus
"+NAMA+"dilakukan.");
ketemu = true;
bantu.kanan.kiri = bantu.kiri;
bantu.kiri.kanan = bantu.kanan;
break;
}
bantu=bantu.kanan;
}
if (ketemu==false)
System.out.println ("data ' "+
NAMA + "'' tidakditemukan");
}
}
}
}
class SenaraiGanda
{
public static void main(String[] args)
{
senarai mahasiswa = new
senarai();
mahasiswa.inisialisasiSenaraiKosong();
mahasiswa.tambahDepan("HERII
PURNAMA",15,'L');
mahasiswa.tambahDepan("Cecep",12,'L');
mahasiswa.tambahDepan("Budi",11,'L');
mahasiswa.tambahDepan("Abud",10,'L');
mahasiswa.cetakSenarai();
mahasiswa.tambahBelakang("Eko",25,'L');
mahasiswa.tambahBelakang("Feri",25,'L');
mahasiswa.tambahBelakang("Gunawan",32,'L');
mahasiswa.tambahBelakang("Hasan",19,'L');
mahasiswa.cetakSenarai();
mahasiswa.tambahTengah(4,"Zaenal",25,'L');
mahasiswa.cetakSenarai();
mahasiswa.hapus("HERII
PURNAMA");
mahasiswa.cetakSenarai();
mahasiswa.hapus("Parmin");
}
}
·
Running Program
4).Kesimpulan
Double Linked List atau Senarai Berantai ganda , hampir
sama dengan Single Linked List. Bedanya Double Linked List lebih flexibel
dibanding Single Linked List karena pada Double Linked List semua simpul –
simpulnya yang ada di dalamnya memiliki dua buah penunjuk yang dignakan untuk
mengkaitkan diri dengan simpul lain yang ada di sebelah kanannya dan sebelah
kirinya.
Dalam konsep DOUBLE LINKED LIST terdapat tiga unsur penting yaitu:
1.
Penunjuk (pointer)
2.
Simpul (list atau node)
3.
Senarai Berantai (Single
Linked List itu sendiri).
Senarai berantai ganda ini gunanya untuk penghubung diantara simpul
– simpul satu dengan yang lain, dimana penghubung antara simpul baru, simpul
bantu, simpul awal, simpul akhir, simpul kanan,dan simul kiri.Simpul yang seperti
itu disebut simpul ganda, karena simpul ini mempunyai dua petunjuk yaitu ‘kanan
dan kiri’. Artinya simpul ini dapat
menujuk ke simpul yang serupa dengan dirinya yang letaknya disebelah kiri
maupun kananya.
5).Listing Terlampir
0 komentar:
Post a Comment
Thanks For Your Feedback.