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);
}
}
}