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

C# LinkedList에서 특정 값을 가진 마지막 노드 찾기 – FindLast 메서드 완벽 정리

C#의 LinkedList<T> 클래스에는 지정한 값이 포함된 마지막 노드를 검색하는 FindLast() 메서드가 내장되어 있습니다. 리스트에 동일한 값이 여러 번 존재할 경우, 이 메서드는 뒤쪽(마지막)부터 탐색하여 해당 값과 일치하는 노드를 반환합니다.

FindLast() 메서드란?

FindLast(T value)는 매개변수로 전달된 값과 일치하는 마지막 노드를 LinkedListNode<T> 형식으로 반환합니다. 만약 일치하는 값이 리스트에 존재하지 않으면 null을 반환하므로, 사용 전에 null 여부를 확인하는 것이 안전합니다.

예제 1: 정수형 LinkedList에서 마지막 노드 찾기

아래 예제에서는 정수 300이 두 번 저장된 LinkedList에서 FindLast()를 사용해 마지막 노드를 찾습니다.

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);
      list.AddLast(300);
      list.AddLast(500);

      Console.WriteLine("LinkedList elements...");
      foreach(int i in list) {
         Console.WriteLine(i);
      }

      LinkedListNode<int> val = list.FindLast(300);
      Console.WriteLine("Specified value = " + val.Value);
   }
}

실행 결과

LinkedList elements...
100
200
300
400
500
300
500
Specified value = 300

리스트에 300이 두 개 존재하지만, FindLast()는 뒤에서부터 탐색하기 때문에 인덱스 5에 있는 두 번째 300 노드를 반환합니다.

예제 2: 문자열 LinkedList에서 마지막 노드 찾기

문자열 타입의 LinkedList에서도 동일하게 사용할 수 있습니다.

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      LinkedList<String> list = new LinkedList<String>();
      list.AddLast("One");
      list.AddLast("Two");
      list.AddLast("Three");
      list.AddLast("Four");
      list.AddLast("Five");

      Console.WriteLine("Elements in LinkedList...");
      foreach (string res in list) {
         Console.WriteLine(res);
      }

      LinkedListNode<string> val = list.FindLast("Five");
      Console.WriteLine("Specified value = " + val.Value);
   }
}

실행 결과

Elements in LinkedList...
One
Two
Three
Four
Five
Specified value = Five

FindLast()와 Find()의 차이점

Find()는 앞쪽(첫 번째)부터 탐색하여 처음으로 일치하는 노드를 반환하고, FindLast()는 뒤쪽(마지막)부터 탐색하여 나중에 일치하는 노드를 반환한다는 점이 핵심 차이입니다. 중복 값이 있을 때 어떤 노드가 필요한지에 따라 적절한 메서드를 선택하면 됩니다.