C#의 LinkedList<T>는 양방향 연결 리스트 구조의 컬렉션으로, 노드를 자유롭게 삽입하거나 삭제할 수 있습니다. 이 글에서는 연결 목록에서 특정 노드 앞에 새 노드를 추가하는 방법을 AddBefore() 메서드를 사용해 단계별로 알아보겠습니다.
1. LinkedList 선언 및 초기화
먼저 문자열 배열을 기반으로 LinkedList를 선언하고 노드를 추가합니다.
string[] students = { "Tim", "Jack", "Henry", "David", "Tom" };
LinkedList<string> list = new LinkedList<string>(students);2. 새 노드 추가
AddLast() 메서드를 사용해 목록 맨 끝에 새 노드를 추가합니다. 이때 반환되는 노드 참조를 변수에 저장해 두면, 이후 해당 노드를 기준으로 삽입 작업을 수행할 수 있습니다.
var newNode = list.AddLast("Kevin");3. AddBefore()로 특정 노드 앞에 노드 추가
주어진 노드 앞에 새 노드를 삽입하려면 AddBefore() 메서드를 사용합니다. 첫 번째 인자는 기준이 되는 노드, 두 번째 인자는 추가할 값입니다.
list.AddBefore(newNode, "Matt");
위 코드를 실행하면 "Kevin" 노드 바로 앞에 "Matt"가 삽입됩니다.
전체 예제 코드
using System;
using System.Collections.Generic;
class Demo {
static void Main() {
string[] students = { "Tim", "Jack", "Henry", "David", "Tom" };
LinkedList<string> list = new LinkedList<string>(students);
foreach (var stu in list) {
Console.WriteLine(stu);
}
// 목록 맨 끝에 노드 추가
var newNode = list.AddLast("Kevin");
// 위에서 추가한 노드 앞에 새 노드 추가
list.AddBefore(newNode, "Matt");
Console.WriteLine("새 노드 추가 후 LinkedList...");
foreach (var stu in list) {
Console.WriteLine(stu);
}
}
}실행 결과
Tim Jack Henry David Tom 새 노드 추가 후 LinkedList... Tim Jack Henry David Tom Matt Kevin
정리
LinkedList<T>의 AddBefore() 메서드는 지정한 노드 바로 앞에 새 노드를 삽입하며, 노드의 위치를 이미 알고 있는 경우 O(1) 시간 복잡도로 매우 빠르게 동작합니다. 반대로 특정 노드 뒤에 노드를 추가할 때는 AddAfter() 메서드를 사용하면 됩니다. 이처럼 LinkedList는 중간 위치의 삽입·삭제가 잦은 상황에서 List<T>보다 유리한 선택이 될 수 있습니다.