CIRCULAR LINKED LIST

   

PROGRAM CIRCULAR LINKED LIST

 

NAMA   : ELI NURHAYATI

NPM      : 20082010115

 

SOAL : 

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.


SOURCE CODE

Class cNode

package CircularLinkedList;

public class cNode {

    private String nama;

    cNode next;

    cNode(String nm){

        nama=nm; next=null;

    }

    //Method Getter

    public String getNama(){

        return nama;

    }

   

}

 














Class cCircularLinkedList 

package CircularLinkedList;

import java.util.Scanner;

public class cCircularLinkedList {

    cNode kepala, ekor;

    private int jNode;

    cNode a=kepala;

    Scanner s=new Scanner(System.in);

    cCircularLinkedList(){

        kepala=ekor=null;

        jNode=0;

        System.out.println("Object Circular Linked List Dibuat...");

    }

   

    public void addNode(cNode neww){

        if(kepala==null){

            kepala=ekor=neww;

            ekor.next=kepala;

        }else{

            neww.next=kepala;

            ekor.next=neww;

            kepala=neww;  

        }

        System.out.println(">> Berhasil Menambahkan Simpul... <<");

    }

   

    public void removeNode(){

        if(kepala==null){

            System.out.println(">> Oops Linked List Masih Kosong <<");

        }else if(kepala.next==kepala){

            //Jika linked list hanya berisi 1 simpul

            kepala=ekor=null;

            System.out.println(">> Berhasil Menghapus Simpul <<");

        }else{

            //Jika linked list berisi >1 simpul

            cNode a=kepala.next;

            kepala.next=null;

            ekor.next=a;

            kepala=a;

            System.out.println(">> Berhasil Menghapus Simpul <<");

        }

    }

   

    public void searchNode(){

        if(ekor==null){

            System.out.println(">> Oops Linked List Masih Kosong <<");

        }else{

            boolean ketemu=false;

            System.out.print("Input Nama Mahasiswa Yang Dicari : ");

            String cari=s.next();

            for(cNode a=kepala ; a!=null ; a=a.next){

                if(a.getNama().equalsIgnoreCase(cari)){

                    ketemu=true;

                    break;

                }

            }

        if(ketemu==false){

            System.out.println(">> Maaf Nama Yang Anda Cari Tidak Ditemukan <<");

        }else{

            System.out.println(">> Yeey Nama Yang Anda Cari Berhasil Ditemukan <<");

        }

        }

    }

   

    public void printNode(){

        System.out.println("===================================");

        System.out.println("      ISI CIRCULAR LINKED LIST     ");

        System.out.println("===================================");

        if(kepala==null){

            System.out.println(">> Oops Linked List Masih Kosong <<");

        }else{

            cNode a=kepala;

            do{

                System.out.println(a.getNama()+" ");

                a=a.next;

            }while(a!=kepala);

            System.out.println("");

        }

       

    }

    public void printcharacter(String cr, String nm){

        String character=cr;

        String name=nm;

        boolean found=false;

        cNode mulai=null;

        cNode t=kepala;

        int bb=character.length();

        int aa=0;

        if(kepala==null){

            System.out.println(">> Oops Linked List Masih Kosong <<");

        }else{

            do{

                if(t.getNama().equalsIgnoreCase(nm)){

                    found=true;

                    mulai=t;

                    break;

                }

                t=t.next;

            }while(t!=kepala);

            if(found==true){

                System.out.println(">> Data Berhasil Ditemukan <<");

                System.out.println("===========================");

                System.out.println("       ISI RANGKAIAN       ");

                System.out.println("===========================");

                t=mulai;

                do{

                    System.out.println(character.charAt(aa)+" ==> "+t.getNama());

                    t=t.next;

                    aa++;

                } while(bb>aa);

                System.out.println("");

            }else{

                System.out.println(">> Oops... Data Tidak Ditemukan <<");

            }

           

        }

       

    }

   

   

   

}

 

               



Main Clas ProgramCircularLinkedList 

package CircularLinkedList;

import java.util.Scanner;

public class ProgramCircularLinkedList {

    public static void main(String[] args) {

        cCircularLinkedList cll = new cCircularLinkedList();

        Scanner s = new Scanner(System.in);

        int pilih=0;

        String nama, cari;

        do{

            System.out.println("\n=============================");

            System.out.println("   MENU CIRCULAR LINKED LIST   ");

            System.out.println("===============================");

            System.out.println("1. Tambah Simpul\n2. Hapus Simpul\n3. Cari Nama Mahasiswa\n4. Cetak Linked List\n5. Cetak Linked List Dengan Karakter\n6. Exit");

            System.out.print("Pilih : ");

            pilih = s.nextInt();

            switch(pilih){

                case 1 :

                    System.out.print("Input Nama Mahasiswa  : ");

                    nama = s.next();

                    cNode n = new cNode(nama);

                    cll.addNode(n);

                    break;

                       

                case 2 :

                    cll.removeNode();

                    break;

               

                case 3 :

                    cll.searchNode();

                    break;

                   

                case 4 :

                    cll.printNode();

                    break;

                   

                case 5 :

                    System.out.print("Masukkan Nama Mahasiswa Awal          : ");

                    String name = s.next();

                    System.out.print("Masukkan Karakter Yang Anda Inginkan  : ");

                    String kr = s.next();

                    cll.printcharacter(kr, name);

                    break;

                   

                case 6 :

                    System.out.println(">>> THANK YOU <<<");

                    break;

            }

        }while(pilih!=6);

        

    }

   

}

 


SCREENSHOT RUNNING PROGRAM

TAMBAH SIMPUL

 




CARI NAMA MAHASISWA




CETAK LINKED LIST


 


CETAK LINKED LIST DENGAN KARAKTER



HAPUS SIMPUL






EXIT





 *Mohon klik gambar untuk hasil yang lebih jelas

**Kritik dan saran anda sangat saya perlukan untuk perbaikan program ini kedepannya.Terima Kasiiih 😊😊😊

***Masih akan disempurnakan kembali


Komentar

Postingan populer dari blog ini

PROGRAM ANTRIAN TIKET PESAWAT

PROGRAM PALINDROME DENGAN STACK

LINKED LIST (TAMBAH DAN HAPUS DARI BELAKANG)