C#에서 AddBefore() 메서드를 사용하면 연결 리스트(LinkedList)의 특정 노드 바로 앞에 새 노드를 간편하게 추가할 수 있습니다. 이 메서드는 지정한 기존 노드를 기준으로 해당 위치 앞에 새로운 노드를 삽입하며, O(1) 시간 복잡도로 동작하기 때문에 매우 효율적입니다.
LinkedList 생성하기
먼저 문자열 노드로 구성된 LinkedList를 만들어 보겠습니다.
string[] students = {"Henry", "David", "Tom"};
LinkedList<string> list = new LinkedList<string>(students);리스트 끝에 노드 추가하기
AddLast() 메서드를 사용하면 리스트 맨 끝에 새 노드를 추가할 수 있습니다.
// 리스트 끝에 새 노드 추가
var newNode = list.AddLast("Brad");AddBefore() 메서드로 노드 삽입하기
이제 AddBefore() 메서드를 사용하여 방금 추가한 "Brad" 노드 앞에 "Emma"라는 새 노드를 삽입해 보겠습니다.
list.AddBefore(newNode, "Emma");
이렇게 하면 "Brad" 노드 바로 앞에 "Emma"가 위치하게 됩니다.
전체 예제 코드
using System;
using System.Collections.Generic;
class Demo {
static void Main() {
string[] students = {"Henry", "David", "Tom"};
LinkedList<string> list = new LinkedList<string>(students);
Console.WriteLine("초기 LinkedList:");
foreach (var stu in list) {
Console.WriteLine(stu);
}
// 리스트 끝에 새 노드 추가
var newNode = list.AddLast("Brad");
// 위에서 추가한 노드 앞에 새 노드 삽입
list.AddBefore(newNode, "Emma");
Console.WriteLine("새 노드 추가 후 LinkedList...");
foreach (var stu in list) {
Console.WriteLine(stu);
}
}
}실행 결과
초기 LinkedList: Henry David Tom 새 노드 추가 후 LinkedList... Henry David Tom Emma Brad
참고 사항
AddBefore() 메서드를 사용할 때는 다음 사항을 유의해야 합니다.
- ArgumentNullException: 지정한 노드가 null인 경우 발생합니다.
- InvalidOperationException: 지정한 노드가 현재 LinkedList에 속해 있지 않은 경우 발생합니다.
- 연결 리스트는 포인터 조작만으로 노드를 삽입하므로, 배열과 달리 요소 이동 없이 빠르게 삽입 작업을 수행할 수 있습니다.