Langsung ke konten utama

Program Linked List Lanjut (Circular Linked List) - Pemrograman Bahasa Java

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

Postingan populer dari blog ini

Program Linked List Lanjut (Double Linked List) - Pemrograman Bahasa Java

Tugas 1 : Buatlah program sederhana untuk mengelola data barang yang terdiri dari Kode, Nama, dan Harga dengan menggunakan double linked list. Menu program setidaknya untuk menambah simpul baru, menghapus simpul, menampilkan linked lis (maju dan mundur), serta mencari data Nama di dalam linked list.   Class Simpul package LinkedListLanjut; public class cSimpulDouble {     private String kode;     private String nama;     private String harga;     cSimpulDouble next;     cSimpulDouble prev;     cSimpulDouble(String kd,String nm, String hg){         kode=kd; nama=nm; harga=hg; next=null; prev=null;         System.out.println("Object "+kd+" Dibuat...");         System.out.println("Object "+nm+" Dibuat...");         System.o...