Senin, 10 Mei 2021

Pemrograman OOP Java : Circular Linked List 1

 

 

Dasar Program Java Berorientasi Objek

Circular Linked List Series 1


The Objective

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

 

Source Code

  • appKema (Main)

//Circular Link List 1

import java.util.Scanner;
import java.util.Scanner;

public class appKema {
    public static void main(String[] args) {
        Scanner input= new Scanner(System.in);
        cData data=null;
        cOperasiLingkar ol= new cOperasiLingkar();
        int opsi=0;

        do {
            System.out.println();
            System.out.println("Aplikasi Sirkulasi Data Kemahasiswaan");
            System.out.println("1. Menambah Data");
            System.out.println("2. Menghapus Data");
            System.out.println("3. Mencetak Data Kemahasiswaan");
            System.out.println("4. Keluar");
            System.out.print("Opsi : ");
            opsi=input.nextInt();

            switch(opsi) {
               case 1:
                    System.out.println();
                    System.out.print("Masukkan Nama : ");
                    String inic=input.next();
                    data=new cData(inic);
                    ol.menambahData(data);
                    break;
                
                case 2:
                    ol.menghapusData();
                    break;
                
                case 3:
                    System.out.print("Daftar Data Nama Kemahasiswaan");
                    System.out.println();
                    ol.mencetakData();
                    System.out.print("Memulai Dari Nama : ");
                    inic=input.next();
                    System.out.print("Tambahkan Karakter Sandingan : ");
                    String kar=input.next();
                    ol.mencetakDataKarakter(kar, inic);
                    break;
                
                case 4:
                    System.out.println("Sampai Jumpa");
                    break;
                    default : System.out.println("Tolong Masukkan Nama yang Benar");
            }
        }while(opsi!=4);
    }
}

  • cOperasiLingkar (Circular Linked List Operation)
//Circular Link List 1

public class cOperasiLingkar {
    cData depan, belakang;
    int titikhubung;
    cOperasiLingkar() {
        depan=belakang=null; titikhubung=0;
    }

    public void menambahData(cData tibar) {
        if(depan==null) {
            depan=belakang=tibar;
            belakang.lanjut=depan;
        } else {
            tibar.lanjut=depan;
            belakang.lanjut=tibar;
            depan=tibar;
        }
    }

    public void mencetakData() {
        if(depan==null) {
            System.out.println("Daftar Tidak Memiliki Data Sama Sekali");
        } else {
            cData ose=depan;
                do {
                    System.out.println(ose.getinisial()+"\t");
                    ose=ose.lanjut;
                } while(ose!=depan);
                System.out.println();
        }
    }

    public void menghapusData() {
        if(depan==null) {
            System.out.println("Daftar Tidak Memiliki Data Yang Bisa Dihapus");
        } else if(depan.lanjut==depan) {
            depan=belakang=null;
                System.out.println("Data Tersebut Telah Dihapus");
        } else {
            cData ose=depan.lanjut;
            depan.lanjut=null;
            belakang.lanjut=ose;
            depan=ose;
                System.out.println("Data Tersebut Telah Dihapus");
        }
    }

    public void mencetakDataKarakter(String kar, String car) {
        String pindai=car;
        String inic=kar;
        int karakter=0;
        int nama=inic.length();
        
        cData mulai=null;
        if(depan==null) {
            System.out.println("Lingkar Daftar Kosong");
        } else {
            boolean eksis=false;
            cData ose=depan;
            
            do {
                if(ose.getinisial().equalsIgnoreCase(car)) {
                    eksis=true;
                    mulai=ose;
                    break;
                } ose=ose.lanjut;
            } while(ose!=depan);
            if(eksis==false) {
                System.out.println("Data Tersebut Tidak Ada Dalam Daftar");
            } else {
                System.out.println("Data Tersebut Ditemukan Dalam Daftar");
                ose=mulai;
                
                do {
                    System.out.println(inic.charAt(karakter)+"->"+ose.getinisial());
                        ose=ose.lanjut;
                        karakter++;
                } while(nama>karakter);
                System.out.println();
            }
        }
    }
}
      
  • cData (Node)

//Circular Link List 1

public class cData {
    private String inisial;
    cData lanjut;
    cData(String inl) {
        inisial=inl; lanjut=null;
    }

    public String getinisial() {
        return inisial;
    }
}


The Visual Output             

  •  Menu Utama Circular Link List
 

  •  Menambah Data dengan Circular Linked List
 


  •  Mencetak Sandingan Karakter dan Data dengan Circular Linked List



  •  Menguji Kemampuan Pindai Data Program
 

  •  Menghapus dan Mencetak Data




Catatan :

  • Bila gambar yang ditampilkan kurang jelas, mohon klik gambar tersebut.

Terimakasih telah berkunjung, have a nice day :))










Tidak ada komentar:

Posting Komentar