PENUGASAN 6 -- Linked List
Implementasi Linked List di Java
Linked List merupakan suatu simpul atau node yang dikaitkan dengan simpul yang lain dengan urutan tertentu sehingga membentuk suatu stuktur. Dalam suatu node berisi variable-variabel serta pointer dari node lainnya.
Macam Linked List
1. Single link list : hanya terdapat satu pointer pada satu node untuk menentukan node selanjutnya.
2. Double linked list: terdapat dua pointer dalam satu node yang digunakan untuk menentukan node sebelum dan sesudahnya.
3. Circular linked list node: yang berada pada posisi tail akan memiliki pointer node yang menjadi head.
Fungsi dalam Linked List
1. Display data
private static void displayData(){
System.out.println("\nData dalam List: " + dataStorage);
System.out.println("Total Data : " + dataStorage.size());
}
2. Add Data
private static void addData() {
System.out.print("Masukkan Data: ");
String tempData = extracted().nextLine();
dataStorage.add(tempData);
displayData();
}
private static void addDataAtLocation() {
boolean status = true;
int indexData = 0;
displayData();
while(status) {
System.out.print("Pilih Index Data yang ingin disisipi data: [0-" + (dataStorage.size() - 1) + "]: ");
try {
status = false;
indexData = extracted().nextInt();
}
catch(InputMismatchException e) {
System.out.println("Data harus berupa Angka!");
status = true;
}
}
System.out.print("Data yang ingin disisipkan pada index data ke- " + indexData + ": ");
String tempData = extracted().nextLine();
dataStorage.add(indexData, tempData);
displayData();
}
private static void addDataToFirst() {
System.out.print("Masukkan Data: ");
String tempData = extracted().nextLine();
dataStorage.addFirst(tempData);
displayData();
}
private static void addDataToLast() {
System.out.print("Masukkan Data: ");
String tempData = extracted().nextLine();
dataStorage.addLast(tempData);
displayData();
}
3. Remove Data
Remove data indeks ke-N
private static void removeData() {
boolean status = true;
int indexData = 0;
displayData();
while(status) {
System.out.print("Pilih Index Data yang ingin dihapus: [0-" + (dataStorage.size() - 1) + "]: ");
try {
status = false;
indexData = extracted().nextInt();
}
catch(InputMismatchException e) {
System.out.println("Data harus berupa Angka!");
status = true;
}
}
dataStorage.remove(indexData);
displayData();
}
Remove data pada tail dan head
private static void removeData() {
boolean status = true;
int indexData = 0;
displayData();
while(status) {
System.out.print("Pilih Index Data yang ingin dihapus: [0-" + (dataStorage.size() - 1) + "]: ");
try {
status = false;
indexData = extracted().nextInt();
}
catch(InputMismatchException e) {
System.out.println("Data harus berupa Angka!");
status = true;
}
}
dataStorage.remove(indexData);
displayData();
}
Remove data x
private static void removeDataByContent() {
displayData();
System.out.print("Masukkan Data yang ingin dihapus: ");
String data = extracted().nextLine();
if(searchData(data)) {
dataStorage.remove(data);
}
else {
System.out.println("Anda memasukkan data yang tidak tersimpan di dalam list");
}
displayData();
}
4. Search Data
private static boolean searchData(String data) {
return dataStorage.contains(data);
}
5. Exit
private static void programExit() {
System.exit(0);
}
Implementasi Linked List
Source:
import java.util.LinkedList;
import java.util.Scanner;
import java.util.InputMismatchException;
/**
* Write a description of class JavaLinkedList here.
*
* @author Adelia Hasna Surya Putri
* @version 01/05/2021
*/
public class JavaLinkedList {
private static LinkedList<String> dataStorage = new LinkedList<String>();
private static Scanner extracted() {
return new Scanner(System.in);
}
private static void displayData(){
System.out.println("\nData dalam List: " + dataStorage);
System.out.println("Total Data : " + dataStorage.size());
}
private static void addData() {
System.out.print("Masukkan Data: ");
String tempData = extracted().nextLine();
dataStorage.add(tempData);
displayData();
}
private static void addDataToFirst() {
System.out.print("Masukkan Data: ");
String tempData = extracted().nextLine();
dataStorage.addFirst(tempData);
displayData();
}
private static void addDataToLast() {
System.out.print("Masukkan Data: ");
String tempData = extracted().nextLine();
dataStorage.addLast(tempData);
displayData();
}
private static void addDataAtLocation() {
boolean status = true;
int indexData = 0;
displayData();
while(status) {
System.out.print("Pilih Index Data yang ingin disisipi data: [0-" + (dataStorage.size() - 1) + "]: ");
try {
status = false;
indexData = extracted().nextInt();
}
catch(InputMismatchException e) {
System.out.println("Data harus berupa Angka!");
status = true;
}
}
System.out.print("Data yang ingin disisipkan pada index data ke- " + indexData + ": ");
String tempData = extracted().nextLine();
dataStorage.add(indexData, tempData);
displayData();
}
private static boolean searchData(String data) {
return dataStorage.contains(data);
}
private static void removeData() {
boolean status = true;
int indexData = 0;
displayData();
while(status) {
System.out.print("Pilih Index Data yang ingin dihapus: [0-" + (dataStorage.size() - 1) + "]: ");
try {
status = false;
indexData = extracted().nextInt();
}
catch(InputMismatchException e) {
System.out.println("Data harus berupa Angka!");
status = true;
}
}
dataStorage.remove(indexData);
displayData();
}
private static void removeDataAtFirst() {
dataStorage.removeFirst();
displayData();
}
private static void removeDataAtLast() {
dataStorage.removeLast();
displayData();
}
private static void removeDataByContent() {
displayData();
System.out.print("Masukkan Data yang ingin dihapus: ");
String data = extracted().nextLine();
if(searchData(data)) {
dataStorage.remove(data);
}
else {
System.out.println("Anda memasukkan data yang tidak tersimpan di dalam list");
}
displayData();
}
private static void programExit() {
System.exit(0);
}
private static void programSwitcher() {
boolean status = true;
int indexMenu = 0;
while(status) {
try {
status = false;
System.out.print("Pilih Menu [1~9]: ");
indexMenu = extracted().nextInt();
}
catch(InputMismatchException e) {
System.out.println("Masukan harus berupa Angka!");
status = true;
}
}
switch(indexMenu) {
case 1: addData(); break;
case 2: addDataToFirst(); break;
case 3: addDataToLast(); break;
case 4: addDataAtLocation(); break;
case 5: removeData(); break;
case 6: removeDataAtFirst(); break;
case 7: removeDataAtLast(); break;
case 8: removeDataByContent(); break;
case 9: programExit(); break;
}
programMenu();
}
private static void programMenu() {
System.out.println("\n Program Menu:"
+ "\n 1. Masukkan data"
+ "\n 2. Masukkan data ke indeks pertama"
+ "\n 3. Masukkan data ke indeks terakhir"
+ "\n 4. Masukkan data pada indeks ke-N"
+ "\n 5. Hapus data pada indeks ke-N"
+ "\n 6. Hapus data indeks pertama"
+ "\n 7. Hapus data indeks terakhir"
+ "\n 8. Hapus data X"
+ "\n 9. Exit");
programSwitcher();
}
public static void main(String[] args) {
programMenu();
}
}
Output:
/** * Output Program JavaLinkedList * * @author Adelia Hasna Surya Putri * @version 01/05/2021 */ Program Menu: 1. Masukkan data 2. Masukkan data ke indeks pertama 3. Masukkan data ke indeks terakhir 4. Masukkan data pada indeks ke-N 5. Hapus data pada indeks ke-N 6. Hapus data indeks pertama 7. Hapus data indeks terakhir 8. Hapus data X 9. Exit Pilih Menu [1~9]: 1 Masukkan Data: 4 Data dalam List: [4] Total Data : 1Program Menu: 1. Masukkan data 2. Masukkan data ke indeks pertama 3. Masukkan data ke indeks terakhir 4. Masukkan data pada indeks ke-N 5. Hapus data pada indeks ke-N 6. Hapus data indeks pertama 7. Hapus data indeks terakhir 8. Hapus data X 9. ExitPilih Menu [1~9]: 2 Masukkan Data: 7 Data dalam List: [7, 4] Total Data : 2Program Menu: 1. Masukkan data 2. Masukkan data ke indeks pertama 3. Masukkan data ke indeks terakhir 4. Masukkan data pada indeks ke-N 5. Hapus data pada indeks ke-N 6. Hapus data indeks pertama 7. Hapus data indeks terakhir 8. Hapus data X 9. ExitPilih Menu [1~9]: 3 Masukkan Data: 1 Data dalam List: [7, 4, 1] Total Data : 3Program Menu: 1. Masukkan data 2. Masukkan data ke indeks pertama 3. Masukkan data ke indeks terakhir 4. Masukkan data pada indeks ke-N 5. Hapus data pada indeks ke-N 6. Hapus data indeks pertama 7. Hapus data indeks terakhir 8. Hapus data X 9. ExitPilih Menu [1~9]: 4 Data dalam List: [7, 4, 1] Total Data : 3 Pilih Index Data yang ingin disisipi data: [0-2]: 2 Data yang ingin disisipkan pada index data ke- 2: 6 Data dalam List: [7, 4, 6, 1] Total Data : 4Program Menu: 1. Masukkan data 2. Masukkan data ke indeks pertama 3. Masukkan data ke indeks terakhir 4. Masukkan data pada indeks ke-N 5. Hapus data pada indeks ke-N 6. Hapus data indeks pertama 7. Hapus data indeks terakhir 8. Hapus data X 9. ExitPilih Menu [1~9]: 5 Data dalam List: [7, 4, 6, 1] Total Data : 4 Pilih Index Data yang ingin dihapus: [0-3]: 0 Data dalam List: [4, 6, 1] Total Data : 3Program Menu: 1. Masukkan data 2. Masukkan data ke indeks pertama 3. Masukkan data ke indeks terakhir 4. Masukkan data pada indeks ke-N 5. Hapus data pada indeks ke-N 6. Hapus data indeks pertama 7. Hapus data indeks terakhir 8. Hapus data X 9. ExitPilih Menu [1~9]: 6 Data dalam List: [6, 1] Total Data : 2Program Menu: 1. Masukkan data 2. Masukkan data ke indeks pertama 3. Masukkan data ke indeks terakhir 4. Masukkan data pada indeks ke-N 5. Hapus data pada indeks ke-N 6. Hapus data indeks pertama 7. Hapus data indeks terakhir 8. Hapus data X 9. ExitPilih Menu [1~9]: 7 Data dalam List: [6] Total Data : 1Program Menu: 1. Masukkan data 2. Masukkan data ke indeks pertama 3. Masukkan data ke indeks terakhir 4. Masukkan data pada indeks ke-N 5. Hapus data pada indeks ke-N 6. Hapus data indeks pertama 7. Hapus data indeks terakhir 8. Hapus data X 9. ExitPilih Menu [1~9]: 8 Data dalam List: [6] Total Data : 1 Masukkan Data yang ingin dihapus: 7 Anda memasukkan data yang tidak tersimpan di dalam list Data dalam List: [6] Total Data : 1
Referensi
https://safriansah.blogspot.com/2018/07/modul-java-linkedlist-program-jadwal.html
https://unydevelopernetwork.com/index.php/2020/04/03/tutorial-struktur-data-implementasi-single-linked-list-sederhana-dengan-java/
Adelia Hasna Surya Putri/5025201200
Comments
Post a Comment