Source Code MainApp
package 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 !=5){
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. 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.println("Terima Kasih!");
}
}
}
}
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;
}
}
Source Code cLinkedList
package 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.getNPM() !=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!");
}
}
Output Program
Penambahan Data Mahasiswa ke Urutan Terawal serta Daftar Datanya
Penambahan Data Mahasiswa ke Urutan Terakhir serta Daftar Datanya
Penambahan Data Mahasiswa Lainnya serta Daftar Datanya
Penghapusan Data Mahasiswa Pertama serta Daftar Datanya
Penghapusan Data Mahasiswa Berdasarkan NPM-nya serta Daftar Datanya
Penghapusan Data Mahasiswa Terakhir serta Daftar Datanya
Penghapusan Seluruh Data Mahasiswa serta Daftar Datanya
Penambahan Kembali Data Mahasiswa serta Daftar Datanya
Pencarian Data Melalui NPM
Daftar Data Mahasiswa
0 Comments