Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# LinkedList AddAfter 메서드 – 특정 노드 뒤에 새 노드 추가하기


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이 발생합니다.