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     : 1

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]: 2 Masukkan Data: 7 Data dalam List: [7, 4] Total Data : 2
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]: 3 Masukkan Data: 1 Data dalam List: [7, 4, 1] Total Data : 3
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]: 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 : 4
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]: 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 : 3
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]: 6 Data dalam List: [6, 1] Total Data : 2
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]: 7 Data dalam List: [6] Total Data : 1
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]: 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

Popular posts from this blog

PENUGASAN 7 -- REKURSI

ETS SEM 2 -- STRUKTUR DATA F

PENUGASAN 8 -- BST