Semoga bermanfaat :)
import java.util.Scanner;
public class LinkedListExample {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
proses diproses = new proses();
int inputan;
System.out.print("Masukkan Banyak Node = ");
inputan = input.nextInt();
for (int i = 0; i < inputan; i++) {
System.out.print("masukkan data = ");
int item = input.nextInt();
diproses.inproses(item);
}
System.out.println("===========CETAK===========");
diproses.bacaproses();
System.out.println();
System.out.println("---------------------------");
int pilihan;
System.out.println("1. Untuk Menambah dan Menghapus data");
System.out.println("0. Untuk Keluar");
System.out.print("Masukkan Pilihan : ");
pilihan = input.nextInt();
System.out.println("---------------------------");
while (pilihan == 1) {
System.out.print("insert data depan = ");
int tambahh = input.nextInt();
diproses.tambahDepan(tambahh);
System.out.println("===========CETAK===========");
diproses.bacaproses();
System.out.println();
System.out.println("---------------------------");
System.out.print("insert data belakang = ");
int tambel = input.nextInt();
diproses.tambahBelakang(tambel);
System.out.println("===========CETAK===========");
diproses.bacaproses();
System.out.println();
System.out.println("---------------------------");
int key;
System.out.print("key = ");
key = input.nextInt();
int baru;
System.out.print("masukkan data baru = ");
baru = input.nextInt();
diproses.tambahDimanapun(baru, key);
System.out.print("============cetak===========");
System.out.println();
diproses.bacaproses();
System.out.println();
System.out.println("---------------------------");
System.out.print("======Hapus Data Depan======");
System.out.println();
diproses.deleltefirst();
diproses.bacaproses();
System.out.println();
System.out.println("---------------------------");
System.out.print("=====Hapus Data Belakang=====");
System.out.println();
diproses.deleteLast();
diproses.bacaproses();
System.out.println();
System.out.println("---------------------------");
System.out.print("=======Hapus Satu Data=======");
System.out.println();
int key2;
System.out.print("Tulis data yang akan dihapus = ");
key2 = input.nextInt();
diproses.delete(key2);
diproses.bacaproses();
System.out.println();
System.out.println("---------------------------");
System.out.println("1. Untuk lanjut memproses data");
System.out.println("0. Untuk Keluar");
System.out.print("Masukkan Pilihan : ");
pilihan = input.nextInt();
if (pilihan == 0) {
System.out.println("=======Terima kasih=======");
}
}
System.out.println("=======Terima kasih=======");
}
}
class Node {
int data;
Node berikut; // pointer
public Node() {
}
public Node(int dt) {
data = dt;
berikut = null;
}
}
class proses { // untuk mengolah data (linked list)
Node depan;
Node belakang;
public boolean isKosong() { // memisalkan sebuah wadah kosong (Linked List-nya)
if ((depan == null) && (belakang == null)) {
return true;
} else {
return false;
}
}
// untuk memproses data yang diinput dari keyboard
public void inproses(int item) {
Node p = new Node(item); // Node p adalah nodebaru
if (isKosong()) {
depan = belakang = p;
} else {
belakang.berikut = p;
belakang = p;
}
}
public void tambahDepan(int item) {
Node p = new Node();
p.data = item;
if (isKosong()) {
belakang = depan = p;
p.berikut = null;
} else {
p.berikut = depan;
}
depan = p;
}
public void tambahBelakang(int item) {
Node p = new Node();
p.data = item;
if (isKosong()) {
depan = belakang = p;
} else {
belakang.berikut = p;
}
belakang = p;
belakang.berikut = null;
}
public void tambahDimanapun(int item, int key) {
Node temp = depan;
Node p = new Node();
p.data = item;
do {
if (temp.data == key) {
p.berikut = temp.berikut;
temp.berikut = p;
break;
}
temp = temp.berikut;
} while (temp != null);
}
public void deleltefirst() {
Node temp = depan;
if (!isKosong()) {
if (depan == belakang) {
depan = belakang = null;
} else {
depan = depan.berikut;
temp = null;
}
} else {
System.out.println("Data Kosong");
}
}
public void deleteLast() {
Node temp = depan;
if (!isKosong()) {
if (depan == belakang) {
depan = belakang = null;
} else {
while (temp.berikut != belakang) {
temp = temp.berikut;
}
belakang = temp;
temp.berikut = null;
}
} else {
System.out.println("Data Kosong");
}
}
public void delete(int key2) {
Node temp = depan;
if (!isKosong()) { // 1
while (temp != null) {
if (temp.berikut.data == key2) { // 2
temp.berikut = temp.berikut.berikut;
break;
}
if (key2 != temp.data) { // jika key yang dimasukkan salah
System.out.println("Data yang anda masukkan salah ");
break;
} else if ((temp.data == key2) && (temp == depan)) { // 2 //3 //untuk key yang letaknya di depan
if ((depan != null) && (belakang != null)) {
if (depan == belakang) { // 4 //jika hanya terdiri 1 data
depan = belakang = null;
} else { // 4
depan = depan.berikut; // jika terdiri dari beberapa data
temp = null;
}
}
break;
} else {
temp = temp.berikut; // 3
}
}
}
else {
System.out.println("Data Kosong"); // 1
}
}
public void bacaproses() {// fungsinya untuk mencetak
Node p;
p = depan;
while (p != null) {
System.out.print(p.data + " ");
p = p.berikut;
}
}
}











