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

C# LinkedList에서 Remove() 메서드로 특정 노드를 제거하는 방법

C#의 LinkedList<T>는 각 노드가 앞뒤 노드에 대한 참조를 함께 가지는 이중 연결 리스트(Double Linked List) 구조입니다. 이번 글에서는 연결 리스트에 담긴 노드 중 특정 값을 가진 노드를 Remove() 메서드를 사용해 제거하는 방법을 예제와 함께 살펴보겠습니다.

LinkedList 생성하기

먼저 문자열 배열을 기반으로 노드로 구성된 LinkedList를 만들어 보겠습니다.

string[] students = {"Katie", "Jennifer", "Amy", "Vera"};
LinkedList<string> list = new LinkedList<string>(students);

위 코드를 실행하면 "Katie", "Jennifer", "Amy", "Vera" 네 개의 노드가 순서대로 저장된 리스트가 생성됩니다.

Remove() 메서드로 노드 제거하기

이제 문자열 요소 "Vera"를 가진 노드를 제거해 보겠습니다. LinkedList 클래스가 기본으로 제공하는 Remove() 메서드를 호출하면 됩니다.

list.Remove("Vera");

Remove(T value) 메서드는 지정한 값과 일치하는 첫 번째 노드를 찾아 리스트에서 제거합니다. 값이 정상적으로 제거되면 true를 반환하고, 해당 값이 리스트에 존재하지 않으면 아무 작업 없이 false를 반환합니다.

전체 예제 코드

using System;
using System.Collections.Generic;

class Demo {
    static void Main() {
        string[] students = {"Katie", "Jennifer", "Amy", "Vera"};
        LinkedList<string> list = new LinkedList<string>(students);

        foreach (var stu in list) {
            Console.WriteLine(stu);
        }

        // 노드 제거
        list.Remove("Vera");

        Console.WriteLine("노드 제거 후 LinkedList...");
        foreach (var stu in list) {
            Console.WriteLine(stu);
        }
    }
}

실행 결과

Katie
Jennifer
Amy
Vera
노드 제거 후 LinkedList...
Katie
Jennifer
Amy

실행 결과를 보면 처음 출력된 목록에는 "Vera"가 포함되어 있지만, Remove("Vera") 호출 이후에는 해당 노드가 삭제되어 세 개의 요소만 남은 것을 확인할 수 있습니다.

추가 팁: 성능 관련 참고 사항

Remove(T value)는 값을 기준으로 노드를 처음부터 순차 검색하므로 최악의 경우 O(n)의 시간 복잡도를 가집니다. 반면, 이미 제거하려는 노드의 참조(LinkedListNode<T>)를 알고 있다면 Remove(LinkedListNode<T>) 오버로드를 사용해 O(1) 시간 안에 즉시 제거할 수 있으므로, 상황에 맞게 적절한 메서드를 선택하는 것이 좋습니다.