LinkedList 생성하기
먼저 정수 배열을 기반으로 LinkedList<int> 객체를 생성합니다.
int[] num = { 1, 2, 3, 4, 5 };
LinkedList<int> list = new LinkedList<int>(num);AddLast()로 리스트 끝에 노드 추가
AddLast() 메서드를 사용하면 연결 리스트의 맨 끝에 새 노드를 추가할 수 있습니다. 이 메서드는 새로 추가된 노드(LinkedListNode<T>)를 반환하므로, 반환값을 변수에 저장해 두었다가 이후 AddAfter() 호출 시 기준 노드로 활용할 수 있습니다.
var newNode = list.AddLast(20);
AddAfter()로 특정 노드 뒤에 노드 추가
위에서 추가한 newNode 바로 뒤에 새 값을 삽입하려면 AddAfter() 메서드를 사용합니다. 첫 번째 인자로 기준이 되는 노드를, 두 번째 인자로 추가할 값을 전달합니다.
list.AddAfter(newNode, 30);
전체 예제 코드
using System;
using System.Collections.Generic;
class Demo {
static void Main() {
int[] num = { 1, 2, 3, 4, 5 };
LinkedList<int> list = new LinkedList<int>(num);
Console.WriteLine("초기 LinkedList:");
foreach (var n in list) {
Console.WriteLine(n);
}
// 리스트 끝에 노드 추가
var newNode = list.AddLast(20);
// 위에서 추가한 노드 뒤에 새 노드 추가
list.AddAfter(newNode, 30);
Console.WriteLine("새 노드가 추가된 LinkedList:");
foreach (var n in list) {
Console.WriteLine(n);
}
}
}실행 결과
1 2 3 4 5 새 노드가 추가된 LinkedList: 1 2 3 4 5 20 30
AddAfter() 메서드 핵심 정리
LinkedList<T> 클래스의 AddAfter() 메서드는 다음과 같은 특징을 가집니다.
- 두 가지 오버로드 제공: AddAfter(LinkedListNode<T> node, T value)는 지정한 노드 뒤에 새 값을 담은 노드를 추가하고, AddAfter(LinkedListNode<T> node, LinkedListNode<T> newNode)는 이미 생성된 노드 객체를 그대로 삽입합니다.
- 빠른 삽입 속도: LinkedList는 양방향 연결 리스트로 구현되어 있어, 기준 노드의 참조만 알고 있다면 O(1) 시간 복잡도로 삽입할 수 있습니다.
- 예외 처리: 기준 노드가 null이거나 값이 null이면 ArgumentNullException이 발생하고, 기준 노드가 현재 리스트에 속해 있지 않으면 InvalidOperationException이 발생합니다.