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

C# 연결 리스트(LinkedList)에서 특정 노드를 찾는 방법

C#의 LinkedList<T> 클래스는 양방향 연결 리스트를 구현한 컬렉션으로, Find() 메서드를 사용하면 특정 값을 가진 노드를 손쉽게 검색할 수 있습니다. 이 글에서는 연결 리스트를 만들고, 원하는 노드를 찾은 뒤 그 위치에 새 노드를 삽입하는 과정을 단계별로 살펴보겠습니다.

1. 연결 리스트 생성하기

가장 먼저 문자열을 저장할 새로운 연결 리스트를 생성합니다.

LinkedList<string> myList = new LinkedList<string>();

2. 연결 리스트에 요소 추가하기

AddLast() 메서드를 사용하면 리스트의 맨 뒤에 요소를 순서대로 추가할 수 있습니다.

// 연결 리스트에 6개의 요소 추가
myList.AddLast("P");
myList.AddLast("Q");
myList.AddLast("R");
myList.AddLast("S");
myList.AddLast("T");
myList.AddLast("U");

3. Find() 메서드로 노드 찾고 새 노드 삽입하기

Find() 메서드는 지정한 값과 일치하는 첫 번째 노드를 반환하며, 결과는 LinkedListNode<T> 타입으로 받습니다. 찾아낸 노드를 기준으로 AddAfter() 메서드를 호출하면 해당 노드 바로 뒤에 새 노드를 삽입할 수 있습니다.

LinkedListNode<string> node = myList.Find("R");
myList.AddAfter(node, "ADDED");

참고: Find() 메서드는 값이 존재하지 않을 경우 null을 반환합니다. 따라서 실제 코드에서는 AddAfter()를 호출하기 전에 반드시 null 여부를 확인하는 것이 안전합니다.

전체 예제 코드

아래 전체 코드를 실행하면 연결 리스트에서 노드를 찾고 새 노드를 삽입하는 과정을 직접 확인할 수 있습니다.

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        LinkedList<string> myList = new LinkedList<string>();

        // 연결 리스트에 6개의 요소 추가
        myList.AddLast("P");
        myList.AddLast("Q");
        myList.AddLast("R");
        myList.AddLast("S");
        myList.AddLast("T");
        myList.AddLast("U");

        // "R" 노드를 찾은 뒤 그 뒤에 새 노드 삽입
        LinkedListNode<string> node = myList.Find("R");
        myList.AddAfter(node, "ADDED");

        foreach (var i in myList) {
            Console.WriteLine(i);
        }
    }
}

실행 결과

P
Q
R
ADDED
S
T
U

실행 결과를 보면 "R" 노드를 성공적으로 찾아낸 후, 그 바로 뒤에 "ADDED"라는 새 노드가 삽입된 것을 확인할 수 있습니다. 이처럼 Find()AddAfter() 메서드를 조합하면 연결 리스트 내에서 원하는 위치에 유연하게 데이터를 삽입할 수 있습니다.