1. 앞에 노드를 추가하는 방법
- 첫 번째 노드를 새로운 노드에 연결합니다.
- 첫 번째 노드에서 헤드를 제거합니다.
- 새 노드를 헤드로 만듭니다.
public class SinglyLinkedList {
static Node head;
static class Node {
int data;
Node next;
Node(int d) {
this.data = d;
this.next = null;
}
}
static void push(int newData) {
Node newNode = new Node(newData);
newNode.next = head;
head = newNode;
}
public static void main(String[] args) {
push(3);
push(2);
push(1);
printList(head);
}
static void printList(Node n) {
while(n != null) {
System.out.println(n.data);
n = n.next;
}
}
}
2. 여러 노드에서 특별한 노드 뒤에 추가하는 방법
- 특정 노드가 존재하는지 확인해야합니다.
- 존재할 경우 새 노드를 만들어서 특정 노드의 다음 포인터를 새 노드의 포인터로 옮깁니다.
- 특정 노드의 다음 포인터를 새 노드로 만듭니다.
public class SinglyLinkedList {
static Node head;
static class Node {
int data;
Node next;
Node(int d) {
this.data = d;
this.next = null;
}
}
static void push(int newData) {
Node newNode = new Node(newData);
newNode.next = head;
head = newNode;
}
static void insertAfter(Node prevNode, int newData) {
if(prevNode == null) {
System.out.println("null");
return;
}
Node newNode = new Node(newData);
newNode.next = prevNode.next;
prevNode.next = newNode;
}
public static void main(String[] args) {
push(3);
push(2);
push(1);
insertAfter(head.next, 4);
printList(head);
}
static void printList(Node n) {
while(n != null) {
System.out.println(n.data);
n = n.next;
}
}
}
3. 연결 리스트 끝에 노드를 추가하는 방법
- 연결 리스트 마지막 노드로 이동합니다.
- 마지막 노드의 포인터를 null에서 새 노드로 변경합니다.
- 새 노드의 포인터를 null로 만듭니다.
public class SinglyLinkedList {
static Node head;
static class Node {
int data;
Node next;
Node(int d) {
this.data = d;
this.next = null;
}
}
static void append(int newData) {
Node newNode = new Node(newData);
if(head == null) {
head = newNode;
return;
}
Node last = head;
while(last.next != null) last = last.next;
last.next = newNode;
return;
}
public static void main(String[] args) {
append(1);
append(2);
append(3);
printList(head);
}
static void printList(Node n) {
while(n != null) {
System.out.println(n.data);
n = n.next;
}
}
}
'알고리즘 > 자료구조' 카테고리의 다른 글
이중 연결 리스트 특징, 정의 (0) | 2024.04.22 |
---|---|
단일 연결 리스트(Singly Linked List) 3가지 삭제 방법 (1) | 2024.04.19 |
단일 연결 리스트(Singly Linked List) 특징, 장단점, 생성, 탐색 (0) | 2024.04.19 |
Linked List 무엇인가(연결 리스트와 배열의 차이) (0) | 2024.04.19 |
문자열 JAVA에서의 저장공간 (0) | 2024.04.19 |