Source Code MainAPP
package LinkedListDouble;
import LinkedList.*;
import java.util.Scanner;
public class MainAPP {
public static void main(String[] args) {
Scanner S = new Scanner(System.in);
//cNode node = null;
cLinkedList LL = new cLinkedList(null);
byte pilih =0;
String nama, npm;
double ipk;
while(pilih !=6){
System.out.println("\nMenu Data Mahasiswa");
System.out.println("1. Tambah Data Mahasiswa");
System.out.println("2. Hapus Data Mahasiswa");
System.out.println("3. Cari Data Mahasiswa");
System.out.println("4. Lihat Daftar Mahasiswa");
System.out.println("5. Bagi Karakter");
System.out.println("6. Keluar");
System.out.print("Pilih : ");
pilih = S.nextByte();
switch(pilih){
case 1 :
byte pilih2;
System.out.println("\nMenu Tambah Data Mahasiswa");
System.out.println("1. Tambah Data di Urutan Terawal");
System.out.println("2. Tambah Data di Urutan Terakhir");
System.out.print("Pilih : ");
pilih2 = S.nextByte();
if(pilih2<3 && pilih2>0) {
System.out.print("\nMasukkan NPM : ");
npm = S.next();
System.out.print("Masukkan Nama : ");
S = new Scanner(System.in);
nama = S.nextLine();
System.out.print("Masukkan IPK : ");
ipk = S.nextDouble();
cNode node = new cNode(npm, nama, ipk);
if(pilih2==1) LL.addNode(node);
else if(pilih2 ==2) LL.addbackNode(node);
}
else System.out.println("Pilihan Tidak Valid");
break;
case 2 :
System.out.println("\nMenu Hapus Data Mahasiswa");
System.out.println("1. Hapus Data Pertama");
System.out.println("2. Hapus Data berdasarkan NPM");
System.out.println("3. Hapus Data Terakhir");
System.out.println("4. Hapus Seluruh Data Mahasiswa");
System.out.print("Pilih : ");
byte pilih3 = S.nextByte();
if(pilih3>4 || pilih3<1) System.out.println("Pilihan Tidak Valid!");
else {
if(pilih3==1) LL.deletefirstNode();
else if(pilih3==2){
System.out.print("NPM yang ingin dihapus : ");
String delnpm = S.next();
LL.deleteNode(delnpm);
}
else if(pilih3==3) LL.deletelastNode();
else LL.deleteallNode();
}
break;
case 3 :
System.out.print("Masukkan NPM yang dicari : ");
String carinpm = S.next();
LL.cariNode(carinpm);
break;
case 4 :
LL.cetakNode();
break;
case 5 :
System.out.print("Masukkan Kata : ");
String kata = S.next();
System.out.print("Masukkan NPM untuk karakter pertama : ");
String npmpertama = S.next();
LL.bagiKata(kata, npmpertama);
break;
case 6 : System.out.println("Terima Kasih!");
}
}
}
}
Source Code cLinkedList
package LinkedListDouble;
import LinkedList.*;
import java.util.Scanner;
public class cLinkedList {
private cNode depan, blkg;
private int jmlhNode=0;
cLinkedList(cNode n){
depan =n ; blkg=n; jmlhNode=0;
}
public void addNode(cNode newNode){
if(depan ==null) {
depan = newNode;
blkg = newNode;
}
else{
newNode.next = depan;
depan.before =newNode;
depan =newNode;
}
jmlhNode++;
System.out.println("Data Berhasil Ditambahkan!");
}
public void addbackNode(cNode newNode){
if(blkg==null){
depan =newNode;
blkg = newNode;
}
else{
newNode.before=blkg;
blkg.next=newNode;
blkg=newNode;
}
System.out.println("Data Berhasil Ditambahkan!");
}
public void deletefirstNode(){
Scanner S = new Scanner(System.in);
System.out.println("Hapus? (Y/T)");
System.out.print("Pilih : ");
String h = S.next();
if(h.equalsIgnoreCase("y")){
if(depan==null) System.out.println("Daftar Data Mahasiswa Kosong!");
else if(depan.next==null) depan=blkg=null;
else{
cNode t = depan.next;
depan = null;
depan = t;
depan.before=null;
System.out.println("Data Urutan Pertama Berhasil Dihapus!");
}
}
else System.out.println("Data Mahasiswa Gagal Dihapus!");
}
public void deleteNode(String n){
Scanner S = new Scanner(System.in);
boolean ketemu=false;
int jn=jmlhNode;
cNode t=depan;
if(t !=null){
for(t = depan ; ketemu!=true && t!=null; t=t.getNext()){
if(t.getNPM().equalsIgnoreCase(n)){
ketemu=true;
System.out.println("Hapus? (Y/T)");
System.out.print("Pilih : ");
String h = S.next();
if(h.equalsIgnoreCase("y")){
cNode u = t.before;
cNode v = t.next;
u.next=null;
v.before=null;
u.next=v;
v.before=u;
}
else System.out.println("Data Mahasiswa Gagal dihapus!");
}
}
if(ketemu==false) System.out.println("Data tidak ditemukan!");
else System.out.println("Data NPM "+n+" Berhasil Dihapus!");
}
else System.out.println("Data Kosong!");
}
public void deletelastNode(){
Scanner S = new Scanner(System.in);
System.out.println("Hapus? (Y/T)");
System.out.print("Pilih : ");
String h = S.next();
if(h.equalsIgnoreCase("y")){
if(depan==null) System.out.println("Daftar Data Mahasiswa Kosong!");
else if(blkg.before==null) blkg=depan=null;
else{
cNode t = blkg.before;
blkg.before=null;
blkg=t;
blkg.next=null;
System.out.println("Data Urutan Terakhir Berhasil Dihapus!");
}
}
else System.out.println("Data Mahasiswa Gagal Dihapus!");
}
public void deleteallNode(){
Scanner S = new Scanner(System.in);
System.out.println("Hapus? (Y/T)");
System.out.print("Pilih : ");
String h = S.next();
if(h.equalsIgnoreCase("y")){
depan=null;
System.out.println("Seluruh Data Mahasiswa Berhasil Dihapus");
}
}
public void cetakNode(){
byte i =1;
if(depan !=null){
for (cNode t = depan; t != null; t=t.getNext()) {
System.out.println(i+". NPM : "+t.getNPM());
System.out.println(" Nama : "+t.getNama());
System.out.println(" IPK : "+t.getIPK());
System.out.println(" ");
i++;
}
}
else System.out.println("Data Mahasiswa Kosong!");
}
public void cariNode(String n){
cNode t;
boolean ketemu=false;
for (t = depan; t!=null && ketemu==false; t=t.getNext()) {
if(t.getNPM().equalsIgnoreCase(n)){
ketemu =true;
System.out.println("Data Mahasiswa ditemukan!");
System.out.println("NPM : "+t.getNPM());
System.out.println("Nama : "+t.getNama());
System.out.println("IPK : "+t.getIPK());
}
}
if(ketemu==false) System.out.println("Data tidak ditemukan!");
}
public void bagiKata(String k, String n){
int jmlhkata = k.length();
boolean ketemu=false;
if(depan==null)System.out.println("Data Mahasiswa Kosong");
else{
for (cNode u = depan; u!=null; u=u.getNext()) {
if(u.getNPM().equalsIgnoreCase(n)){
ketemu=true;
cNode t = u;
for (int i = 0; i < jmlhkata; i++) {
System.out.println(k.charAt(i)+" : "+t.getNama()+"\t("+t.getNPM()+")");
if(t.getNext()!=null) t=t.getNext();
else t=depan;
}
}
}
if(ketemu==false) System.out.println("Data Mahasiswa Tidak Ditemukan!");
}
}
}
Source Code cNode
package LinkedListDouble;
public class cNode {
private String npm, nama;
private double ipk;
cNode next, before;
cNode(String np, String n, double i){
npm = np; nama = n; ipk =i; next =null;
}
public void setNPM(String n){
npm =n;
}
public void setNama(String n){
nama =n;
}
public void setIPK(double i){
ipk =i;
}
public void setNext(cNode n){
next =n;
}
public String getNPM(){
return npm;
}
public String getNama(){
return nama;
}
public double getIPK(){
return ipk;
}
public cNode getNext(){
return next;
}
}
0 Comments