Tugas 2 :
Buatlah
program sederhana untuk menambah dan menghapus data nama mahasiswa dengan
menggunakan circular linked list. Kemudian ada menu tambahan untuk memasukkan
sebuah kata (String) tanpa spasi untuk dibagikan setiap karakter penyusunnya ke
masing masing nama mahasiswa yang ada di dalam linked list, dan input nama dari
siapa pembagian kata akan dimulai. Ada kemungkinan jumlah karakter kata lebih
sedikit, sama, atau lebih banyak daripada jumlah nama mahasiswa. jika lebih
banyak, maka ada nama mahasiswa yang akan mendapatkan karakter lebih banyak
daripada yang lainnya.
Contoh
:
Nama mahasiswa: Budi - Wati - Iwan
Input Kata: Merdeka
Mulai pembagian dari: Iwan
Hasil :
M --> Iwan
E --> Budi
R --> Wati
D --> Iwan
E --> Budi
K --> Wati
A --> Iwan
Tips: Gunakan script seperti di method pencarian untuk
mendapatkan titik awal pembagian; simpan di simpul temporary. Gunakan panjang
String kata untuk membatasi perulangan saat pembagian kata. Gunakan method
String charAt(indeks) untuk mengakses setiap karakter penyusunnya kata.
Unggah source code program dan contoh tampilannya di blog
masing-masing. Kemudian posting URL di sini sebagai pesan balasan.
Class Simpul
package
LinkedListLanjut;
public
class cSimpulCircular {
private String nama;
cSimpulCircular next;
cSimpulCircular (String n){
nama=n; next=null;
System.out.println("Object
"+n+" telah dibuat...");
}
public String getNama(){
return nama;
}
}
Class Linked List
package
LinkedListLanjut;
public
class cDaftarBerkaitCircular {
cSimpulCircular head, tail;
int jSimpulCircular;
cDaftarBerkaitCircular(){
head=tail=null;
jSimpulCircular=0;
System.out.println("Object
Circular Linked List telah dibuat...");
}
public void tambahSimpul(cSimpulCircular
simpulBaru){
if(head==null){
head=tail=simpulBaru;
tail.next=head;
}
else{
simpulBaru.next=head;
tail.next=simpulBaru;
head=simpulBaru;
}
System.out.println("Simpul baru
berhasil ditambahkan...");
}
public void hapusSimpul(){
if(head==null){
System.out.println("Circular
Linked List kosong...");
}
else if(head.next==head){
head=tail=null;
System.out.println("Simpul
berhasil dihapus...");
}
else{
cSimpulCircular temp=head.next;
head.next=null;
tail.next=temp;
head=temp;
System.out.println("Simpul
berhasil dihapus");
}
}
public void cetakData(){
if(head==null){
System.out.println("Circular
Linked List kosong...");
}
else{
cSimpulCircular temp=head;
do{
System.out.print(temp.getNama()+" ");
temp=temp.next;
}while(temp!=head);
System.out.println("");
}
}
public void cetakKarakter(String n, String
cr){
String nm = n;
String cari = cr;
int jNama = nm.length();
int jChar = 0;
cSimpulCircular start = null;
if(head==null){
System.out.println("Circular
Linked List kosong...");
}
else{
boolean ya=false;
cSimpulCircular temp=head;
do{
if(temp.getNama().equalsIgnoreCase(cr)){
ya=true;
start=temp;
break;
}
temp=temp.next;
}while(temp!=head);
if(ya==false){
System.out.println("Data
tidak ditemukan...");
}
else{
System.out.println("Data
ditemukan...");
temp=start;
do{
System.out.println(nm.charAt(jChar)+" -> "+temp.getNama());
temp=temp.next;
jChar++;
}while(jNama>jChar);
System.out.println("");
}
}
}
}
Main App Linked List
package LinkedListLanjut;
import java.util.*;
public class appLinkedListLanjutCircular
{
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
cSimpulCircular sl=null;
cDaftarBerkaitCircular db=new cDaftarBerkaitCircular();
int pilih=0;
do{
System.out.println("\nMenu
Circular Linked List");
System.out.println("1. Tambah
Simpul");
System.out.println("2. Hapus
Simpul");
System.out.println("3. Cetak
dengan Karakter");
System.out.println("4.
Exit");
System.out.print("Pilih =
");
pilih=sc.nextInt();
switch(pilih){
case 1:
System.out.print("Tambah Nama Siswa = ");
String nm = sc.next();
sl = new
cSimpulCircular(nm);
db.tambahSimpul(sl);
break;
case 2:
db.hapusSimpul();
break;
case 3 :
System.out.print("Data
tersedia = ");
db.cetakData();
System.out.print("Mulai
dari = ");
nm=sc.next();
System.out.print("Tambah kata = ");
String c=sc.next();
db.cetakKarakter(c, nm);
break;
case 4 :
System.out.println("Terimakasih...");
break;
}
}while(pilih!=4);
}
}
Hasil
Running Program
run:
Object Circular Linked List telah
dibuat...
Menu Circular Linked List
1. Tambah Simpul
2. Hapus Simpul
3. Cetak dengan Karakter
4. Exit
Pilih = 1
Tambah Nama Siswa = Yayuk
Object Yayuk telah dibuat...
Simpul baru berhasil ditambahkan...
Menu Circular Linked List
1. Tambah Simpul
2. Hapus Simpul
3. Cetak dengan Karakter
4. Exit
Pilih = 1
Tambah Nama Siswa = Rani
Object Rani telah dibuat...
Simpul baru berhasil ditambahkan...
Menu Circular Linked List
1. Tambah Simpul
2. Hapus Simpul
3. Cetak dengan Karakter
4. Exit
Pilih = 1
Tambah Nama Siswa = Rossa
Object Rossa telah dibuat...
Simpul baru berhasil ditambahkan...
Menu Circular Linked List
1. Tambah Simpul
2. Hapus Simpul
3. Cetak dengan Karakter
4. Exit
Pilih = 1
Tambah Nama Siswa = Fitri
Object Fitri telah dibuat...
Simpul baru berhasil ditambahkan...
Menu Circular Linked List
1. Tambah Simpul
2. Hapus Simpul
3. Cetak dengan Karakter
4. Exit
Pilih = 3
Data tersedia = Fitri Rossa Rani Yayuk
Mulai dari = Rossa
Tambah kata = VETERAN
Data ditemukan...
V -> Rossa
E -> Rani
T -> Yayuk
E -> Fitri
R -> Rossa
A -> Rani
N -> Yayuk
Menu Circular Linked List
1. Tambah Simpul
2. Hapus Simpul
3. Cetak dengan Karakter
4. Exit
Pilih = 2
Simpul berhasil dihapus
Menu Circular Linked List
1. Tambah Simpul
2. Hapus Simpul
3. Cetak dengan Karakter
4. Exit
Pilih = 3
Data tersedia = Rossa Rani Yayuk
Mulai dari = Rani
Tambah kata = VETERAN
Data ditemukan...
V -> Rani
E -> Yayuk
T -> Rossa
E -> Rani
R -> Yayuk
A -> Rossa
N -> Rani
Menu Circular Linked List
1. Tambah Simpul
2. Hapus Simpul
3. Cetak dengan Karakter
4. Exit
Pilih = 4
Terimakasih...
BUILD SUCCESSFUL (total time: 57
seconds)
Disusun : Roro Ayu Pangestuti (20082010128)
Catatan untuk Pak Cahyo : Mohon maaf Bapak sebelumnya, saya mengumpulkan agak terlambat dari teman teman yang lain. Saya juga mohon maaf apabila saya pernah berbuat kesalahan yang mungkin tidak saya sadari. Selamat Hari Raya Idul Fitri, 1 Syawal 1442 H ya pak. Minal Aidzin Wal Faidzin, mohon maaf lahir batin.
Komentar
Posting Komentar