Developer MJ

[Java] Double Linked List 구현 본문

Programming/Code

[Java] Double Linked List 구현

MIN JOON 2020. 12. 19. 23:43

더블 링크드 리스트

insert, extract ( remove ), show 구현


import java.util.Scanner;

class Node {
    int data;
    Node prev;
    Node next;

    Node(int _data) {
        data = _data;
    }

    static void insert(Node _head, Node _node) {
        Node next = _head.next;
        _head.next = _node;
        _node.prev = _head;

        if (next != null) {
            next.prev = _node;
            _node.next = next;
        }

    }

    static Node extract(Node _head, int _data) {
        Node current = _head.next;

        while (current != null) {
            if (current.data == _data) {
                Node prev = current.prev;
                Node next = current.next;

                prev.next = next;

                if (next != null) {
                    next.prev = prev;
                }

                return current;

            }

            current = current.next;
        }

        return null;

    }

    static void show(Node _head) {
        Node temp = _head.next;
        while (temp != null) {
            System.out.printf("%d ", temp.data);
            temp = temp.next;
        }
        System.out.println();
    }
}

public class LinkedList {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        Node head = new Node(0);

        for (int i = 0; i < N; i++) {
            int mode = sc.nextInt();
            int data = sc.nextInt();

            switch (mode) {
                case 1:
                    // Insert node
                    Node new_node = new Node(data);
                    Node.insert(head, new_node);
                    break;
                case 2:
                    // Delete node
                    Node deleted_node = Node.extract(head, data);
                    if (deleted_node == null) {
                        System.out.println("Nothing to delete with : " + data);
                    }
                    break;
                default:
                    System.out.println("Not supported mode : " + mode);
                    System.out.println("1 : Insert node");
                    System.out.println("2 : Delete node");
                    break;
            }

            Node.show(head);
        }

    }
}

 

'Programming > Code' 카테고리의 다른 글

[Java] Priority Queue (우선순위 큐) 구현  (0) 2020.12.20
[C/C++] DFS/BFS 구현  (0) 2019.04.24
[C/C++] Binary Search Tree 구현  (0) 2019.04.24
[Java] 퀵정렬 (Quick Sort)  (0) 2019.04.18
[Java] 계수정렬(Counting Sort)  (0) 2019.04.18