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

C# LinkedList에서 특정 값을 가진 첫 번째 노드를 찾는 방법

C#에서 LinkedList에 포함된 값 중 지정한 값과 일치하는 첫 번째 노드를 찾으려면 Find() 메서드를 사용하면 됩니다. 이 메서드는 LinkedList 클래스에서 제공되며, 지정된 값이 처음으로 나타나는 노드를 반환합니다.

Find() 메서드란?

Find(T value) 메서드는 LinkedList의 처음(Head)부터 끝(Tail)까지 순차적으로 탐색하면서, 매개변수로 전달된 값과 일치하는 첫 번째 노드를 LinkedListNode<T> 형태로 반환합니다. 만약 일치하는 값이 없으면 null을 반환합니다.

예제 1: 문자열 LinkedList에서 노드 찾기

다음은 문자열을 저장하는 LinkedList에서 특정 이름을 가진 노드를 찾는 예제입니다.

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      LinkedList<string> list = new LinkedList<string>();
      list.AddLast("John");
      list.AddLast("Tim");
      list.AddLast("Kevin");
      list.AddLast("Jacob");
      list.AddLast("Emma");
      list.AddLast("Ryan");
      list.AddLast("Brad");
      list.AddLast("Carl");

      Console.WriteLine("LinkedList 요소들...");
      foreach(string str in list) {
         Console.WriteLine(str);
      }

      LinkedListNode<string> val = list.Find("Jacob");
      Console.WriteLine("지정된 값 = " + val.Value);
   }
}

실행 결과

LinkedList 요소들...
John
Tim
Kevin
Jacob
Emma
Ryan
Brad
Carl
지정된 값 = Jacob

위 코드에서 list.Find("Jacob")을 호출하면 리스트 앞쪽부터 탐색하여 "Jacob"이라는 값이 저장된 노드를 찾아 반환합니다. 반환된 노드 객체의 Value 속성을 통해 실제 값을 확인할 수 있습니다.

예제 2: 정수 LinkedList에서 노드 찾기

정수형 데이터에서도 동일하게 사용할 수 있습니다.

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      LinkedList<int> list = new LinkedList<int>();
      list.AddLast(100);
      list.AddLast(200);
      list.AddLast(300);
      list.AddLast(400);
      list.AddLast(500);

      Console.WriteLine("LinkedList 요소들...");
      foreach(int i in list) {
         Console.WriteLine(i);
      }

      LinkedListNode<int> val = list.Find(300);
      Console.WriteLine("지정된 값 = " + val.Value);
   }
}

실행 결과

LinkedList 요소들...
100
200
300
400
500
지정된 값 = 300

참고 사항

  • 시간 복잡도: Find() 메서드는 선형 탐색(O(n)) 방식으로 동작하므로, 리스트가 클 경우 성능에 유의해야 합니다.
  • null 반환 처리: 찾으려는 값이 리스트에 존재하지 않으면 null이 반환되므로, 사용 전 반드시 null 여부를 확인하는 것이 안전합니다.
  • LastIndexOf 대응: 마지막으로 나타나는 노드를 찾으려면 FindLast() 메서드를 사용할 수 있습니다.

이처럼 C#의 Find() 메서드를 활용하면 LinkedList에서 원하는 값을 손쉽게 검색하고 해당 노드를 활용할 수 있습니다.