LAPORAN PRAKTIKUM
STRUKTUR
DATA
MODUL V
Nama : Demy
Octiana Azmianti
NIM :
125610118
Jurusan : Sistem
Informasi
JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI MANAJEMEN DAN INFORMATIKA
AKAKOM YOGYAKARTA
2013
PERTEMUAN KE – 5
SINGLE LINKEDLIST
( SENARAI BERANTAI
TUNGGAL )
A.
Pembahasan
Listing
class simpul → kelas simpul, kelas ini digunakan untuk
mendeklarasikan pengisian simpul dan membaca hasil output list. Kelas ini
nantinya akan dipanggil di kelas implementasi linklist.
pro{ tected
String nama; → baris ini
merupakan variable nama, tipe variable ini yaitu String.
int umur; → ini merupakan variable umur dengan tipe integer.
simpul kanan; →
digunakan untuk mendeklarasikan atribut kanan.
public
void
ngisi_simpul(String NAMA, int UMUR)
{ nama = NAMA;
umur =
UMUR;
}→ diatas merupakan method ngisi_simpul yang berisi parameter NAMA dan
parameter UMUR, parameter NAMA memiliki tipe data String sedangkan parameter
UMUR memiliki tipe data integer. Didalam method ngisi_simpul ini berisi
pendeklarasian bahwa variable nama mengarah pada parameter NAMA dan variable
umur mengarah pada parameter UMUR. Method ini digunakan untuk mengisi list.
void cetak_simpul()
{ System.out.print (nama + "-" +
umur + " ");
} → diatas merupakan method dengan nama method cetak_simpul yang digunakan
untuk membaca hasil list, method ini tidak memiliki parameter dan method ini
digunakan untuk menampilkan keluaran nama – umur.
}
class senarai → ini
merupakan kelas senarai, kelas ini sama seperti kelas simpul. Kelas ini
nantinya juga akan diimplementasikan dikelas link list.
{ protected
simpul awal; → digunakan untuk
mendeklarasikan atribut awal.
simpul akhir; → digunakan untuk
mendeklarasikan atribut akhir.
public
void inisialisasi_senarai()
{ awal = null;
akhir = null;
} → diatas merupakan method dengan nama method inisialisasi_senarai yang
digunakan untuk menginisialisasikan simpul awal dan simpul akhir ke null. Null
yaitu adalah sebuah referensi ke alamat nol atau belum referensi ke obyek yang
lain.
void tambah_depan(String TDNAMA,
int TDUMUR) → ini merupakan method tambah_depan yang memiliki
parameter TDNAMA dan TDUMUR, TDNAMA
memiliki tipe String dan TDUMUR memiliki tipe integer, method tambah_depan ini
digunakan untuk menambah list pada bagian depan. Isi dari method tambah_depan
yaitu :
{
System.out.println("tambah depan '" +TDNAMA+ "' dilakukan.."); →
baris ini digunakan untuk menampilkan keluaran tambah depan +digabung dengan
nama yang telah ditambahkan+ dilakukan .
simpul baru = new simpul(); → digunakan
untuk membuat obyek dari kelas simpul, nama obyek tersebut yaitu baru. Dalam
membuat obyek tanda - tandanya yaitu terdapat kata – kata new.
baru.ngisi_simpul(TDNAMA, TDUMUR); →
baru.ngisi_simpul artinya obyek baru digeser ke method ngisi_simpul jadi list
yang baru ditambahkan nanti merupakan obyek baru.
if (awal == null) // list masih
kosong
{
awal = baru;
akhir = baru;
baru.kanan = null;
} → jika simpul awal merupakan
null adalah benar atau list masih kosong, maka simpul awal diarahkan ke obyek
baru, atau simpul akhir diarahkan ke obyek baru kemudian obyek baru digeres ke
simpul kanan kemudian diarahkan ke null.
else
{
baru.kanan = awal;
awal = baru;
} → jika pernyataan diatas salah
maka pernyataan ini akan dikerjakan,yaitu obyek baru digeser kesimpul kanan
kemudian diarahkan ke simpul awal, simpul awal mengarah pada obyek baru.
}
void tambah_belakang(String TBNAMA, int TBUMUR)→ini
merupakan method tambah_belakang yang memiliki parameter TBNAMA yang bertipe
String dan parameter TBUMUR yang bertipe integer. Method ini digunakan untuk
menambah list pada bagian belakang.
{System.out.println("tambah belakang '" +TBNAMA+
"'dilakukan.."); → baris ini diigunakan untuk menampilkan keluaran
tambah belakang digabung dengan naka yang telah ditambahkan pada bagian
belakang.
simpul baru = new simpul(); → digunakan
untuk membuat obyek dari kelas simpul, nama obyek tersebut yaitu baru.
baru.ngisi_simpul(TBNAMA, TBUMUR); →
baru.ngisi_simpul artinya obyek baru digeser ke
method ngisi_simpul, jadi list yang baru ditambahkan nanti merupakan
obyek baru.
if (awal == null)
{
awal = baru;
akhir = baru;
baru.kanan = null;
}→ jika pernyataan simpul awal sama dengan null adalah benar, maka simpul
awal diarahkan ke obyek baru, atau simpul akhir diarahkan ke obyek baru,
kemudian obyek baru digeser ke simpul kanan dan diarahkan ke null.
else
{
akhir.kanan = baru;
akhir = baru;
baru.kanan = null;
} → jika pernyataan diatas salah
maka pernyataan ini akan dikerjakan, simpul akhir digeser ke simpul kanan kemudian diarahkan ke obyek
baru, simpul akhir diarahkan ke obyek baru dan kemudian obyek baru digeser ke
simpul kanan dan diarahkan ke null.
}
void tambah_tengah(String TTNAMA, int TTUMUR) → baris ini
merupakan method tambah_tengah yang memiliki parameter TTNAMA dan TTUMUR,
parameter TTNAMA memiliki tipe String dan TTUMUR memiliki tipe integer.
{
System.out.println("tambah tengah '" +TTNAMA+
"'dilakukan.."); → baris ini diigunakan untuk menampilkan keluaran
tambah tengah digabung dengan nama yang telah ditambahkan pada bagian tengah.
simpul
baru = new simpul();→ digunakan untuk
membuat obyek dari kelas simpul, nama obyek tersebut yaitu baru.
baru.ngisi_simpul(TTNAMA, TTUMUR); →
baru.ngisi_simpul artinya obyek baru digeser ke method ngisi_simpul, jadi list
yang baru ditambahkan nanti merupakan obyek baru.
if (awal == null)
{
awal = baru;
akhir = baru;
baru.kanan = null;
}→ jika simpul awal adalah null, pernyataan diatas akan dikerjakan, yaitu
simpul awal diarahkan ke obyek baru atau simpul akhir diarahkan ke obyek baru,
obyek baru digeser ke simpul kanan dan kemudian diarahkan ke null.
else → jika pernyataan diatas salah maka pernyataan ini akan
diseleksi.
{
if (TTNAMA.compareTo(awal.nama) < 0) //if (awal.nama > TTNAMA)
{ baru.kanan = awal;
awal = baru;
} → Obyek
baru digeser ke simpul kanan mengarah pada simpul awal, artinya yaitu obyek
yang baru ditambah merupakan awal.
else if
(akhir.nama.compareTo(TTNAMA) < 0)
//if(TTNAMA > akhir.nama) → jika pernyataan diatas tidak ada yang cocok maka pernyataan
ini akan diseleksi, jika TTNAMA letaknya lebih dari simpul akhir digeser ke
variable nama adalah benar maka akan dikerjakan.
{ akhir.kanan = baru; → simpul
akhir digeser ke simpul kanan mengarah ke obyek baru.
akhir = baru; → simpul
akhir mengarah ke obyek baru.
baru.kanan = null; → obyek
baru digeser ke simpul kanan mengarah pada null.
}
Else → jika
pernyataan diatas tidak benar maka pernyataan ini akan dikerjakan.
{ simpul bantu = new simpul(); → membuat
obyek baru dengan nama simpul yang terdapat pada kelas simpul.
bantu = awal; → obyek
bantu diarahkan pada variable awal.
while
(bantu.kanan.nama.compareTo(TTNAMA) < 0)
//while (bantu.kanan.nama < TTNAMA) → arti perulangan ini yaitu obyek bantu digeser ke simpul kanan kemudian
simpul kanan digeser ke variable nama jika letak nama kurang dari indek ke
0 maka perulangan akan dikerjakan.
{ bantu = bantu.kanan; → obyek bantu diarahkan ke obyek bantu yang
digeser ke simpul kanan.
if (bantu == akhir) break; →
pernyataan ini artinya yaitu jika obyek bantu merupakan variable akhir maka
pernyataan akan dikerjakan, break disini artinya untuk mengakhiri perulangan .
}
baru.kanan = bantu.kanan; → obyek
baru digeser ke simpul kanan kemudian diarahkan ke obyek bantu kemudian obyek
bantu tesebut digeser ke simpul kana.
bantu.kanan = baru; → obyek bantu digeser kesimpul kanan kemudian diarahkan
ke obyek baru.
}
}
}
void cetak_senarai() → ini merupakan method baru dengan nama cetak_senarai,
method ini tidak memiliki parameter. Method ini digunakan untuk membaca list.
{ simpul bantu = new simpul();→ baris ini digunakan untuk membuat obyek dari kelas
simpul, nama obyek tersebut yaitu bantu.
bantu = awal;
while (bantu != null)
{
bantu.cetak_simpul();
bantu = bantu.kanan;
} → baris diatas digunakan untuk melakukan perulangan, jika obyek bantu tidak
sama dengan null maka perulangan akan dikerjakan terus sampai obyek bantu
terddapat pada posisi null,obyek bantu diarakan pada simpul awal, selanjutnya
simpul awal akan dibaca, kemudian obyek bantu digeser ke method cetak_simpul,
kemudian obek bantu digeser ke simpul kanan.
System.out.println("");
}
void hapus(String HNAMA) → baris ini merupakan method dengan nama method hapus
yang digunakan untuk menghapus daftar list, method hapus ini memiliki parameter
HNAMA yang memiliki tipe String. Isi
dari method hapus yaitu :
{
System.out.println("menghapus '" + HNAMA + "'
dilakukan.."); → digunakan untuk menampilkan keluaran menghapus
digabung dengan nama yang akan dihapus.
if (awal.nama.equals(HNAMA)) → jika simpul awal digeser ke variable nama adalah
HNAMA maka pernyataan dibawah ini akan dikerjakan. Equals digunakan untuk
menganti tanda (=) .
{
awal = awal.kanan; → isi dari
pernyataan diatas yaitu simpul awal akan diarahkan ke simpul awal yang digeser
ke simpul kanan.
}
Else
{
simpul bantu = new simpul();
bantu = awal; → jika pernyataan diatas salah maka pernyataan ini akan
diseleksi, pernyataan ini menyatakan bahwa dibuat obyek baru dengan nama obyek
bantu, obyek ini merupakan obyek dari kelas simpul. Obyek bantu diarahan ke
simpul awal, kemudian dilakukan perulangan dibawah ini.
while
(bantu.kanan.nama.equals(HNAMA)==false)
//while(bantu.kanan.nama != HNAMA) → perulangan akan dikerjakan
jika obyek bantu digeser ke simpul kanan dan kemudian digeser ke variable nama
tidak sama dengan HNAMA.
{ bantu = bantu.kanan;
if (bantu.kanan == null) break;
}→ obyek bantu diarahkan ke obyek bantu yang digeser ke
simpul kanan, jika obyek bantu yang digeser ke kanan sama dengan null maka
perulangan akan dikerjakan.
if ((bantu == akhir) &&
(HNAMA.equals(akhir.nama)==false))
{ System.out.println("data '"
+ HNAMA + "' yang anda maksud tidak
ada dalam list");} → jika
obyek bantu adalah akhir dan HNAMA sama dengan simpul akhir digeser ke variable
nama adalah false maka akan ditampilkan keluaran “data” + nama yang akan
dihapus + “yang anda maksud tidak ada dalam list.
else
{ bantu.kanan =
bantu.kanan.kanan;} → jika pernyataan diatas salah maka pernyataan ini akan
dikerjakan yaitu pernyataan yang menyatakan bahwa obyek bantu digeser ke simpul
kanan kemudian diarahkan ke obyek bantu yang digeser ke simpul kanan kemudian
digeser lagi ke simpul kanan.
}}}
//----------------------bagian
program utama-------------------------------------------------
class senarai_tunggal → kelas senarai_tunggal merupakan implementasi
dari kelas senarai dan simpul.
{
public static void main(String[] args) →method main.
{ senarai mahasiswa = new
senarai(); →membuat obyek baru dengan
nama mahasiswa, obyek dibuat pada kelas senarai.
mahasiswa.inisialisasi_senarai();
→ didalam
method inisialisasi_senarai ();
awal = null;
akhir = null;
mahasiswa.tambah_depan("Feni",15);
mahasiswa.tambah_depan("Cecep",12);
mahasiswa.tambah_depan("Budi",11);
mahasiswa.tambah_depan("Abud",10);
→
program diatas digunakan untuk menambah
list pada bagian depan melalui method tambah_depan, pada list bagian depan
ditambah nama- nama berikut beserta umurnya"Feni",15,
"Cecep",12, "Budi",11 dan "Abud",10.
mahasiswa.tambah_belakang("Gunawan",16);
mahasiswa.tambah_belakang("Hasan",16);
mahasiswa.tambah_tengah("Deni",13);
mahasiswa.tambah_tengah("Eko",14);
→ pgogram diatas dilakukan penambahan list pada bagian
belakang melalui method tambah_belakang, pada bagian belakang ditambahkan nama
– nama berikut "Gunawan",16,
"Hasan",16, "Deni",13, dan "Eko",14.
mahasiswa.hapus("Cecep");
mahasiswa.cetak_senarai();
System.out.println("");
→ kemudian
dilakukan hapus list, dalam melakukan penghapusan dilakukan melalui method
hapus, yang dihapus yaitu list dengan nama cecep kemudian dilakukan pembacaan
list sehingga hasil ouputnya yaitu :
mahasiswa.tambah_tengah("Zaenal",25); → dilakukan
penambahan list pada bagian tengah, yaitu ditambah nama "Zaenal",25.
mahasiswa.cetak_senarai(); → kemudian
dicetak .
mahasiswa.hapus("Dedi"); → dilakukan
method hapus pada nama dedi.
mahasiswa.cetak_senarai();→kemudian hasilnya dibaca.
mahasiswa.hapus("Parmin"); → dilakukan
penghapusan pada nama Parmin, karena nama Parmin tidah terdapat pada list
sehingga terdapat keterangan data yang anda maksud tidak terdapat pada list.
mahasiswa.cetak_senarai(); → kemudian hasilnya dibaca.
}
B.
TUGAS
class simpul
{ protected
String nama;
String jenis;
int umur;
simpul kanan;
public
void ngisi_simpul(String NAMA,String KEL, int UMUR)
{ nama = NAMA;
umur = UMUR;
jenis = KEL;
}
void cetak_simpul()
{
System.out.print (nama + " " + jenis + " " +umur +
"\t");
}
}
class senarai
{ protected
simpul awal;
simpul akhir;
public
void inisialisasi_senarai()
{ awal = null;
akhir = null;
}
void tambah_depan(String TDNAMA,String KEL, int TDUMUR)
{
System.out.println("tambah depan '" +TDNAMA+ "'
dilakukan..");
simpul baru = new simpul();
baru.ngisi_simpul(TDNAMA,KEL,
TDUMUR);
if (awal == null) // list masih
kosong
{
awal = baru;
akhir = baru;
baru.kanan = null;
}
else
{
baru.kanan = awal;
awal = baru;
}
}
void tambah_belakang(String TBNAMA,String KEL, int TBUMUR)
{
System.out.println("tambah belakang '" +TBNAMA+
"'dilakukan..");
simpul baru = new simpul();
baru.ngisi_simpul(TBNAMA,KEL,TBUMUR);
if (awal == null)
{
awal = baru;
akhir = baru;
baru.kanan = null;
}
else
{
akhir.kanan = baru;
akhir = baru;
baru.kanan = null;
}
}
void tambah_tengah(String TTNAMA,String KEL, int TTUMUR)
{ System.out.println("tambah
tengah '" +TTNAMA+ "'dilakukan..");
simpul baru = new simpul();
baru.ngisi_simpul(TTNAMA,KEL,TTUMUR);
if (awal == null)
{
awal = baru;
akhir = baru;
baru.kanan = null;
}
else
{
if (TTNAMA.compareTo(awal.nama) < 0) //if (awal.nama > TTNAMA)
{ baru.kanan = awal;
awal = baru;
}
else if
(akhir.nama.compareTo(TTNAMA) < 0)
//if(TTNAMA > akhir.nama)
{ akhir.kanan = baru;
akhir = baru;
baru.kanan = null;
}
else
{ simpul bantu = new simpul();
bantu = awal;
while
(bantu.kanan.nama.compareTo(TTNAMA) < 0)
//while (bantu.kanan.nama < TTNAMA)
{ bantu = bantu.kanan;
if (bantu == akhir)
break;
}
baru.kanan = bantu.kanan;
bantu.kanan = baru;
}
}
}
void cetak_senarai()
{ simpul bantu = new simpul();
bantu = awal;
int i=0;
while (bantu != null)
{
i = i+1 ;
System.out.print(i+".");
bantu.cetak_simpul();
bantu = bantu.kanan;
}
System.out.println("");
System.out.println("");
}
void hapus(String HNAMA)
{
System.out.println("menghapus '" + HNAMA + "'
dilakukan..");
if (awal.nama.equals(HNAMA))
{
awal = awal.kanan;
}
else
{
simpul bantu = new simpul();
bantu = awal;
while
(bantu.kanan.nama.equals(HNAMA)==false)
//while(bantu.kanan.nama != HNAMA)
{ bantu = bantu.kanan;
if (bantu.kanan == null) break;
}
if ((bantu == akhir) &&
(HNAMA.equals(akhir.nama)==false))
{ System.out.println("data '"
+ HNAMA + "' " +
"yang anda
maksud tidak ada dalam list");
}
else
{ bantu.kanan = bantu.kanan.kanan;}
}
}
void get_name(String CRNAMA )
{
System.out.println("mencari '" + CRNAMA + "'
dilakukan..");
if (awal.nama.equals(CRNAMA))
{
System.out.println("data '" + CRNAMA + "' " +
"ada
diurutan ke- 1");
}
else{
simpul bantu = new simpul();
bantu = awal;
int i=0;
while (bantu.nama.equals(CRNAMA)==false)
{
i = i+1 ;
bantu = bantu.kanan;
if ((bantu == akhir) &&
(CRNAMA.equals(akhir.nama)==false))
{ System.out.println("data '"
+ CRNAMA + "' " +
"yang anda maksud tidak ada dalam
list");
}
else if
(bantu.nama.equals(CRNAMA)==true)
{ System.out.println("data '" +
CRNAMA + "' " +
"ada
diurutan ke- "+(i+1));
}
if (bantu.kanan == null) break;
}}}}
//----------------------bagian
program utama-------------------------------------------------
class senarai_tunggal
{
public static void main(String[] args)
{ senarai mahasiswa = new
senarai();
mahasiswa.inisialisasi_senarai();
mahasiswa.tambah_depan("Feni", "P", 15);
mahasiswa.tambah_depan("Cecep","L",12);
mahasiswa.tambah_depan("Budi","L",11);
mahasiswa.tambah_depan("Abud","L",10);
mahasiswa.tambah_belakang("Gunawan","L",16);
mahasiswa.tambah_belakang("Hasan","L",16);
mahasiswa.tambah_tengah("Deni","L",13);
mahasiswa.tambah_tengah("Eko","L",14);
mahasiswa.hapus("Cecep");
mahasiswa.cetak_senarai();
System.out.println("");
mahasiswa.tambah_tengah("Zaenal","L",25);
mahasiswa.cetak_senarai();
mahasiswa.hapus("Dedi");
mahasiswa.cetak_senarai();
mahasiswa.hapus("Parmin");
mahasiswa.cetak_senarai();
mahasiswa.get_name("Zaenal");
mahasiswa.cetak_senarai();
mahasiswa.get_name("Dodo");
mahasiswa.cetak_senarai();
}
}
Outputnya:
C.
Kesimpulan
Link list atau senarai berantai yaitu pengalokasian
memori secara dinamis yang digunakan untuk menyimpan data. Single link list
yaitu linked list yang simpul – simpulnya hanya memiliki 1 buah petunjuk yang
digunakan untuk mengaitkan simpul yang sejenis. Operasi – operasi yang dilakukan
pada link list yaitu inisialisasi, tambah list belakang, tambah lisk depan,
tambah list tengah, mengambil link list, mencari data dari dalam list.
LAPORAN PRAKTIKUM
STRUKTUR
DATA
MODUL VI
Nama : Demy
Octiana Azmianti
NIM :
125610118
Jurusan : Sistem
Informasi
JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI MANAJEMEN DAN INFORMATIKA
AKAKOM YOGYAKARTA
2013
Pembahasan Listing :
1. class simpul : kelas ini digunakan untuk
mendeklarasikan pengisian simpul dan membaca hasil output list. Kelas ini
nantinya akan dipanggil di kelas implementasi linklist
2.
protected :merupakan perintah untuk membatasi hak akses, sehingga
variabel nama dan umur tidak dapat diakses oleh kelas lain.
3. String nama :
data yang dimasukkan bertipe String dengan variabel nama
4. int umur :
data yang dimasukkan bertipe integer dengan variabel umur
5. simpul kanan
:pendeklarasian atribut dengan variabel kanan
6.
public
void ngisi_simpul(String NAMA, int UMUR)
{
nama = NAMA;
umur = UMUR;} :
void di samping digunakan untuk mengisi data pada simpul yang memiliki 2
variabel yaitu NAMA bertipr String dan UMUR bertipe integer
7.
void cetak_simpul(): void disamping digunakan untuk mencetak simpul
8.
System.out.print (nama +"-"+ umur + " "): perintah untuk mencetak simpul
yang telah dimasukkan. Method ini tidak memiliki parameter
9.
class senarai : kelas ini merupakan kelas yang dipakai untuk membentuk simpul yang
digunakan sebagai bagian dari double link list, nama kelas ini yaitu kelas
senarai
10. protected
:merupakan perintah untuk membatasi hak akses, sehingga variabel nama dan umur
tidak dapat diakses oleh kelas lain.
11. Simpul awal; : digunakan untuk
mendeklarasikan atribut awal pada kelas simpul.
12. Simpul akhir; : digunakan untuk mendeklarasikanatribut akhir
pada kelas simpul.
13. public
void inisialisasiSenaraiKosong()
{
awal = null;
akhir = null;} : merupakan pendeklarasian
method dengan nama method inisialisasiSenaraiKosong, method ini tidak memiliki
parameter, method ini digunakan untuk menyimpan link list. Di dalam method ini
simpul awal mengarah pada null dan simpul akhir juga mengarah pada null.
14. Int hitungJumlahSimpul() : sintaks disamping digunakan untuk menghitung jumlah simpul
15. Int N =0;
Simpul
bantu;
Bantu=awal;
While
(bantu!=null){
Bantu=bantu.kanan;
N++;
Return(N); :
merupakan .pendeklarasian untuk menghitung jumlah simpul dengan tipe data
integer yang dimulai dari 0. Variabel bantu di deklarasikan dengan nama
variabel yaitu awal N++ berarti simpul tersebut akan bertambah satu
16. Void tambahDepan(String NAMA,
int UMUR): void disamping digunakan untuk menambahkan data pada simpul bagian
tengah, yang memiliki dua variabel yaitu nama bertipe string dan umur bertipe
integer
17. System.out.println("tambah
depan '" +NAMA+ "' dilakukan.."); : perintah untuk
mencetak pemberitahuan bahwa penambahan yang dilakukan di bagian tengah telah
berhasil dilakukan
18. simpul baru=new simpul();: pembuatan
objek baru dengan nama variabel baru
19. baru.ngisiSimpul(NAMA, UMUR);
if (awal == null)
{
awal = baru;
akhir
= baru;
baru.kiri
= null;
baru.kanan=null;}
else
{ baru.kanan = awal;
awal.kiri
= baru;
awal=baru;
awal.kiri=null;}} :
dalam senarai ini juga didefinisikan bahwa awal adalah null dan akhir juga
null. Untuk menambahkan data baru ke dalam program. Simpul baru= new Simpul
menandakan bahwa simpul baru merupakan new simpul. if (awal == null)merupakan
fungsi perulangan jika awal sama dengan kosong maka program akan menandai bahwa
akhir adalah baru dan data baru mengikat variabel disebelah kanannya dan
variabel baru mengikat variabel kirinya yang merupakan variabel kosong sehingga
awal sama dengan baru.
20. Void tambah belakang (String
NAMA, int UMUR) : void disamping digunakan untuk menambah data pada
simpul bagian belakang yang memiliki dua variabel yaitu NAMA bertipe String dan
UMUR bertipe Integer.
21. System.out.println(“tambah
belakang ‘”+NAMA+ “’dilakukan..”) : perintah untuk mencetak
pemberitahuan bahwa penambahan yang dilakukan dibagian belakang telah berhasil
dilakukan.
22. Simpul baru = new Simpul(); :
pembuatan objek baru dengan nama variabel baru.
23. If(awal == null){
Awal
= baru;
Akhir
= baru;
Baru.kiri
= null;
Baru.kanan
= null}
Else
{
Baru.kiri
= akhir;
Akir.kanan
= baru;
Akhir
= baru;
Baru.kanan
= null }} : perintah diatas didefinisikan bahwa awal adalah kosong (null) dan akhir
juga kosong (null). Untuk menambahkan data baru kedalam program simpul baru =
new simpul menandakan bahwa simpul baru merupakan new simpul. If(awal==null)
merupakan fungsi perulangan jika awal sama dengan kosong maka program akan
menandai bahwa akhir adalah baru dan data baru mengikat variabel disebelah
kananya.
24. Void tambahtengah(int POSISI,
String NAMA, int UMUR) : void disamping digunakan menambah data pada bagian
tenagh simpul yang memiliki dua variabel yaitu nama dan umur.
25. System.out.println(“tambah
tengah’”+NAMA+ “’ dilakukan…”) : perintah untuk mencetak
pemberitahuan bahwa penambahan yang dilakukan dibagian tengah telah berhasil
dilakukan.!
26. Simpul baru = new Simpul(); :
pembuatan objek baru dengan nama variabel baru.
27. Baru.ngisiSimpul(NAMA, UMUR);
Awal
= baru;
Akhir
= baru;
Baru.kiri
= null;
Baru.kanan
= null;
Else {
Int
jumlahSimpul = hitung JumlahSimpul();
If
(POSISI ==1)
tambahDepan(NAMA,
UMUR)
else
if(POSISI > jumlahSimpul)
tambahBelakang
(NAMA, UMUR) ;
else
(
simpul
bantu;
bantu
= awal;
int
N = 1;
while
((N < POSISI )&& (bantu! = akhir)){
bantu
= bantu.kanan;
N++;
} : merupakan fungsi perulangan jika awal sama dengan kosong maka prpogram
akan menandai bahwa akhir adalah baru dan adata baru mengikat variabel disebelah
kanannya dan variabel baru akan mengikat variabel dikirinya yang merupakan
variabel kosong sehingga awal sama dengan baru. Pada perulangan tsb ada
perulangan lagi untuk menghitung jumlah simpul yang menyatakan bahwa jika
posisi awal adalah 1 maka penambhana dilakukan didepan, jika tidak maka
penambahan dilakukan dibelakang.
28. Simpul baru = new Simpul(); :
pembuatan objek baru dengan nama variabel baru.
29. Baru.ngisiSimpul(NAMA, UMUR);
Baru.kiri
= bantu.kiri;
Baru.kiri.kanan
= baru;
Baru.kanan
= bantu;
Bantu.kiri
= baru }}}
30. Void cetak senarai() :
void disamping digunakan untuk mencetak senarai yang telah dibuat.
31. 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;}} :
untuk menghapus data diakhir senarai. Simpul bantu merupakan variabel awal.
Dalam program ini menggunakan perulangan while. Variabel bantu mengikat di
kanan yang sama dengan variabel akhir.variabel bantu adalah variabel yang hanya
mengikat data di kanan. Simpul yang dihapus merupakan berada di akhr simpul,
sehingga variabel akhir adalah variabel bantu. Dan variabel akhir mengikat
variabel di sebelah kanan yang merupakan kosong maka program akan melakukan
penghapusan.
32. void hapus(String NAMA) : ini merupakan method hapus, method ini digunakan untuk
menghapus list. Method hapus hanya memiliki satu parameter yaitu parameter
HNAMA yang bertipe String.
33. if (awal.nama.equals(NAMA))
{ awal = awal.kanan;} : jika nama yang akan dihapus terdapat pada awal
list maka simpul awal mengarah pada simpul awal dan kemudian digeser kearah
kanan.
34. else
{
simpul bantu = new simpul();
bantu = awal;
while(bantu.kanan.nama.equals(NAMA)==false)
{ bantu
= bantu.kanan;
if (bantu.kanan == null);: jika obyek bantu digeser ke simpul kanan kemudian digeser
lagi kevariabel nama tidak sama dengan nama yang akan dihapus maka obyek bantu
mengarah pada obyek bantu yang digeser ke simpul kanan. Jika obyek bantu
digeser ke simpul kanan adalah null maka perulangan selesai.
35. If ((bantu == akhir) &&
(NAMA.equals(akhir.nama)==false))
{ System.out.println("data '" + NAMA
+ "' ) yang anda maksud tidak ada dalam list");} : jika obyek bantu mengarah pada simpul akhir
dan sampai simpul akhir nama salah atau tidak ditemukan maka keterangan data
+nama yang dicari+ yang anda maksud tidak ada dalam list akan tampil.
TUGAS
class simpul
{ protected
String nama;
int umur;
char jkel;
String jbtn;
simpul kiri;
simpul kanan;
public
void
ngisiSimpul(String NAMA, char JK, String JABATAN, int UMUR)
{
nama = NAMA;
umur = UMUR;
jkel = JK;
jbtn = JABATAN;
}
void cetakSimpul()
{
System.out.print(nama+
"-"+ umur +" "+jkel+" "+jbtn+ " ");
}
}
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, String JABATAN)
{
System.out.println("tambah
depan'"+NAMA+"'dilakukan..");
simpul
baru=new simpul();
baru.ngisiSimpul(NAMA,
JK, JABATAN, UMUR);
if(awal==null)
{
awal=baru;
akhir=baru;
baru.kiri=null;
baru.kanan=null;
}
else
{
baru.kanan=awal;
awal.kiri=baru;
awal=baru;
awal.kiri=null;
}
}
void
tambahBelakang(String NAMA, int UMUR, char JK, String JABATAN)
{
System.out.println("tambah
belakang'"+NAMA+"'dilakukan..");
simpul
baru=new simpul();
baru.ngisiSimpul(NAMA,
JK, JABATAN, UMUR);
if(awal==null)
{
awal=baru;
akhir=baru;
baru.kiri=null;
baru.kanan=null;
}
else
{
baru.kiri=akhir;
akhir.kanan=baru;
akhir=baru;
baru.kanan=null;
}
}
void
tambahTengah(int POSISI, String NAMA, int UMUR, char JK, String JABATAN)
{
System.out.println("tambah
tengah'"+NAMA+"'dilakukan..");
if(awal==null)
{
simpul
baru=new simpul();
baru.ngisiSimpul(NAMA,
JK, JABATAN, UMUR);
awal=baru;
akhir=baru;
baru.kiri=null;
baru.kanan=null;
}
else
{
int
jumlahSimpul= hitungJumlahSimpul();
if(POSISI==1)
tambahDepan(NAMA,
UMUR, JK, JABATAN);
else
if(POSISI>jumlahSimpul)
tambahBelakang(NAMA,
UMUR, JK, JABATAN);
else
{
simpul
bantu;
bantu=awal;
int
N=1;
while((N<POSISI)&&(bantu!=akhir))
{
bantu=bantu.kanan;
N++;
}
simpul
baru=new simpul();
baru.ngisiSimpul(NAMA,
JK, JABATAN, UMUR);
baru.kiri=bantu.kiri;
baru.kiri.kanan=baru;
baru.kanan=bantu;
bantu.kiri=baru;
}
}
}
void cetakSenarai()
{
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("");
}
void
hapus(String NAMA)
{
if(awal==null)
{
System.out.println("senarai
kosong, menghapus tidak dapat dilakukan");
}
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;
akhir.kanan=null;
}
else
{
simpul bantu;
bantu=awal;
boolean
ketemu=false;
while(bantu!=akhir)
{
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+"'tidak
ditemukan");
}
}
}
}
class TugasSenaraiGanda
{
public static void
main(String[] args)
{
senarai
mahasiswa=new senarai();
mahasiswa.inisialisasiSenaraiKosong();
mahasiswa.tambahDepan("Dedi",
15, 'L', "OB");
mahasiswa.tambahDepan("Cecep",
12, 'L', "Owner");
mahasiswa.tambahDepan("Ani",
11, 'P', "Direktur");
mahasiswa.tambahDepan("Abud",
10, 'L', "Keuangan");
mahasiswa.cetakSenarai();
mahasiswa.tambahBelakang("Eko",
25, 'L', "Sekretaris");
mahasiswa.tambahBelakang("Feri",
25, 'L', "Karyawan");
mahasiswa.tambahBelakang("Gubawan",
32, 'L', "Security");
mahasiswa.tambahBelakang("Hasan",
19, 'L', "Karyawan");
mahasiswa.cetakSenarai();
mahasiswa.tambahTengah(4,
"Zaenal", 25, 'L', "Manager");
mahasiswa.cetakSenarai();
mahasiswa.hapus("Dedi");
mahasiswa.cetakSenarai();
}
}
Tidak ada komentar:
Posting Komentar