//Tugas ke_tujuh
/*
Nama : Ati Tasmiati Dewi
Kelas : G2
*/
import java.util.Scanner;
class Node {
private String Nim;
private String Nama;
private double Ipk;
public Node next;
// -------------------------------------------------------------
public Node(String nim, String nama, double ipk) {
Nim = nim;
Nama = nama;
Ipk = ipk;
}
// -------------------------------------------------------------
public void tampilNode() {
System.out.printf(" %-8s %-13s %5s \n",Nim,Nama,Ipk);
}
public String getNIM(){
return Nim;
}
//method mengambil data nim
public String getNama(){
return Nama;
}
//method mengambil data nama
public double getIpk(){
return Ipk;
}
//method mengambil data ipk
} // end class Node
////////////////////////////////////////////////////////////////
class LinkList {
private Node first;
public LinkList() {
first = null;
}
// -------------------------------------------------------------
public void insertFirst(String nim, String nama, double ipk) {
Node newNode = new Node(nim, nama, ipk);
newNode.next = first;
first = newNode;
}
// -------------------------------------------------------------
// mencari data (data yang dicari --> dat)
public Node cari(String nama) {
Node indek = first; // membuat node indek yang "difungsikan" sebagai pointer dan di-set menunjuk ke Node yang ditunjuk juga oleh pointer FIRST
while(!indek.getNama().equals(nama)) {
if(indek.next == null) // jika NEXT dari Node yang ditunjuk oleh pointer indek == NULL, maka
return null; // data tidak ditemukan
else // jika tidak NULL, maka
indek = indek.next; /* lanjutkan ke node berikutnya, yaitu pointer indek di-set menunjuk ke Node yang ditunjuk oleh NEXT dari Node yang
ditunjuk oleh pointer indek mula-mula */
}
return indek; // data ditemukan
}
// -------------------------------------------------------------
// menghapus data (data yang dicari --> dat)
public Node hapus(String nim) {
Node indek1 = first; /* membuat node indek1 dan node indek2 yang "difungsikan" sebagai
pointer dan di-set menunjuk ke Node yang ditunjuk juga oleh pointer FIRST*/
Node indek2 = first;
while(!indek1.getNIM().equals(nim)) { // mencari data yang akan dihapus
if(indek1.next == null)
return null; // data tidak ditemukan
else { // jika data ditemukan, maka
indek2 = indek1; // pointer indek2 di-set untuk menunjuk ke Node yang ditunjuk oleh pointer indek1
indek1 = indek1.next; // pointer indek1 di-set untuk menunjuk ke Node yang ditunjuk oleh NEXT dari pointer indek1 sebelumnya
}
}
if(indek1 == first) // jika pointer indek1 menunjuk Node yang sama dengan yang ditunjuk oleh pointer first, maka
first = first.next; // pointer first di-set menunjuk Node yang ditunjuk oleh Next dari Node yang ditunjuk oleh pointer first sebelumnya
else
indek2.next = indek1.next; /* Next dari Node yang ditunjuk oleh pointer indek2 di-set untuk menunjuk Node yang ditunjuk oleh Next dari Node
yang ditunjuk oleh pointer indek1 */
return indek1;
}
// -------------------------------------------------------------
public void tampilList() {
Node indek = first;
System.out.println("-------------------------------");
System.out.println(" Nim Nama Ipk ");
System.out.println("-------------------------------");
//for(Node i=indek ; i!-;1--){
//while(indek != null) {
do{
indek.tampilNode();//menampilkan jika data bukan nul
indek = indek.next;//lanjut ke index selanjutnya
}
while(indek!=null);
System.out.println("-------------------------------");
System.out.println("");
}
// -------------------------------------------------------------
} // end class LinkList
////////////////////////////////////////////////////////////////
class Prak07_11520244043{
public static void main(String [] args) {
LinkList list = new LinkList();
Scanner sken = new Scanner(System.in);
String nim, nama;
double ipk;
int menu;
//pilihan menu
do{
System.out.println("--------------------");
System.out.println(" MENU PILIHAN ");
System.out.println("--------------------");
System.out.println(" 1. Tambah Data ");
System.out.println(" 2. Lihat Data ");
System.out.println(" 3. Cari Data ");
System.out.println(" 4. Hapus Data ");
System.out.println(" 5. Keluar ");
System.out.print("Pilihan anda --> : ");
menu = sken.nextInt();
System.out.println("");
switch(menu) {
case 1 : {
System.out.println(" Input Data -->> ");
System.out.print(" Nim : ");
nim = sken.next();//Melakukan input nim
System.out.print(" Nama : ");
nama = sken.next();//Melakukan input nama
System.out.print(" Ipk : ");
ipk = sken.nextDouble();//Melakukan input ipk
list.insertFirst(nim,nama,ipk);
System.out.println("---------------------");
System.out.println("");
break;
}case 2 : {
list.tampilList();
break;
}case 3 : {
System.out.println(" Cari data -->> ");
System.out.print(" Masukkan NAMA : ");
nama = sken.next();//Melakukan input nim
System.out.println("---------------------");
System.out.println("");
System.out.println("---------------------");
System.out.println(" Hasil cari ");
System.out.println("---------------------");
System.out.println(" Nama Mahasiswa : "+nama);
Node x = list.cari(nama);
if( x != null){
System.out.println("-----------------------");
System.out.println(" Data ditemukan !!! ");
System.out.println("-----------------------");
System.out.println("");
}else{
System.out.println("------------------------");
System.out.println(" Data tidak ditemukan ");
System.out.println("------------------------");
System.out.println("");
}
break;
}case 4 :{
System.out.println(" Hapus data -->> ");
System.out.print(" Masukkan Nim : ");
nim = sken.next();//Melakukan input nim
System.out.println("---------------------");
System.out.println("");
System.out.println("---------------------");
System.out.println(" Hapus Data ");
System.out.println("---------------------");
System.out.println(" Nim Mahasiswa : "+nim);
Node y = list.hapus(nim);
if( y != null ){
System.out.println("-------------------------");
System.out.println(" Data sudah dihapus !!! ");
System.out.println("-------------------------");
System.out.println("");
}else{
System.out.println("--------------------------");
System.out.println("Data tidak dapat dihapus!!");
System.out.println("--------------------------");
System.out.println("");
}
break;
}
}
}while(menu > 0 && menu < 5);
} // end main()
} // end class LinkList2App
////////////////////////////////////////////////////////////////
Tidak ada komentar:
Posting Komentar