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

C# LinkedList 첫 번째 노드 제거 – RemoveFirst() 메서드 활용법


C# LinkedList의 첫 번째 노드 제거 방법

LinkedList<T> 컬렉션에서 맨 앞에 있는 노드를 제거하려면 RemoveFirst() 메서드를 사용합니다. 이 메서드는 리스트의 첫 번째 노드를 삭제하고 Count 속성 값을 1만큼 감소시킵니다.

RemoveFirst() 메서드의 주요 특징

  • 첫 번째 노드를 O(1) 상수 시간 복잡도로 빠르게 제거합니다.
  • 리스트가 비어 있는 상태에서 호출하면 InvalidOperationException이 발생합니다.
  • 노드 제거 후 내부 연결 구조는 자동으로 재조정되므로 별도의 처리가 필요 없습니다.

예제 1 – RemoveFirst() 기본 사용법

다음은 문자열을 저장하는 LinkedList를 만들고, RemoveFirst()로 첫 번째 노드를 제거한 후 그 결과를 확인하는 예제입니다.

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("Three");
      list.AddLast("Three");
      list.AddLast("Four");

      Console.WriteLine("Count of nodes = " + list.Count);
      Console.WriteLine("Elements in LinkedList... (Enumerator iterating through LinkedList)");

      LinkedList<string>.Enumerator demoEnum = list.GetEnumerator();
      while (demoEnum.MoveNext()) {
         string res = demoEnum.Current;
         Console.WriteLine(res);
      }

      // LinkedList의 첫 번째 노드 제거
      list.RemoveFirst();

      Console.WriteLine("Count of nodes (UPDATED) = " + list.Count);
      Console.WriteLine("Elements in LinkedList... (Enumerator iterating through LinkedList)..UPDATED");

      demoEnum = list.GetEnumerator();
      while (demoEnum.MoveNext()) {
         string res = demoEnum.Current;
         Console.WriteLine(res);
      }
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Count of nodes = 6
Elements in LinkedList... (Enumerator iterating through LinkedList)
One
Two
Three
Three
Three
Four
Count of nodes (UPDATED) = 5
Elements in LinkedList... (Enumerator iterating through LinkedList)..UPDATED
Two
Three
Three
Three
Four

처음에는 6개의 노드가 있었지만, RemoveFirst() 호출 후 첫 번째 요소인 "One"이 제거되어 노드 수가 5개로 줄어든 것을 확인할 수 있습니다.

예제 2 – RemoveFirst()를 여러 번 호출하기

이번에는 RemoveFirst() 메서드를 연속으로 두 번 호출하여 노드를 순차적으로 제거하는 예제를 살펴보겠습니다.

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("Three");
      list.AddLast("Three");
      list.AddLast("Four");

      Console.WriteLine("Count of nodes = " + list.Count);

      LinkedList<string>.Enumerator demoEnum = list.GetEnumerator();
      while (demoEnum.MoveNext()) {
         string res = demoEnum.Current;
         Console.WriteLine(res);
      }

      // 첫 번째 노드 제거 (1회차)
      list.RemoveFirst();

      Console.WriteLine("Count of nodes (UPDATED) = " + list.Count);

      demoEnum = list.GetEnumerator();
      while (demoEnum.MoveNext()) {
         string res = demoEnum.Current;
         Console.WriteLine(res);
      }

      // 첫 번째 노드 제거 (2회차)
      list.RemoveFirst();

      Console.WriteLine("Count of nodes (UPDATED AGAIN) = " + list.Count);

      demoEnum = list.GetEnumerator();
      while (demoEnum.MoveNext()) {
         string res = demoEnum.Current;
         Console.WriteLine(res);
      }
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Count of nodes = 6
Elements in LinkedList... (Enumerator iterating through LinkedList)
One
Two
Three
Three
Three
Four
Count of nodes (UPDATED) = 5
Elements in LinkedList... (Enumerator iterating through LinkedList)..UPDATED
Two
Three
Three
Three
Four
Count of nodes (UPDATED AGAIN) = 4
Elements in LinkedList... (Enumerator iterating through LinkedList)..UPDATED AGAIN
Three
Three
Three
Four

RemoveFirst()를 호출할 때마다 LinkedList의 맨 앞 노드가 하나씩 제거되고 Count 값도 그에 맞게 감소합니다. 반대로 맨 뒤의 노드를 제거하려면 RemoveLast() 메서드를 사용하면 됩니다.