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에서 원하는 값을 손쉽게 검색하고 해당 노드를 활용할 수 있습니다.