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

C# LinkedList에서 AddFirst 메서드로 시작 부분에 새 노드 추가하기

C#의 LinkedList<T> 클래스에서 리스트 맨 앞에 새 노드나 값을 추가하려면 AddFirst() 메서드를 사용합니다. 이 메서드는 지정된 값을 담는 새 노드를 연결 리스트의 시작 부분에 삽입하며, 시간 복잡도는 O(1)로 매우 효율적입니다.

예제 1: 문자열 LinkedList에서 AddFirst 사용하기

먼저 문자열 타입의 LinkedList를 만들고, AddLast()로 여러 요소를 추가한 뒤 AddFirst()로 시작 부분에 노드를 삽입하는 예제입니다.

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main(){
      LinkedList<string> list = new LinkedList<string>();
      
      // 리스트 끝에 요소 추가
      list.AddLast("A");
      list.AddLast("B");
      list.AddLast("C");
      list.AddLast("D");
      list.AddLast("E");
      list.AddLast("F");
      
      Console.WriteLine("노드 개수 = " + list.Count);
      Console.WriteLine("LinkedList의 요소들...");
      foreach (string res in list){
         Console.WriteLine(res);
      }
      
      // 추가 요소 삽입
      list.AddLast("G");
      list.AddLast("H");
      list.AddLast("I");
      
      Console.WriteLine("\n업데이트된 노드 개수 = " + list.Count);
      Console.WriteLine("업데이트된 LinkedList의 요소들");
      foreach (string res in list){
         Console.WriteLine(res);
      }
      
      // 시작 부분에 노드 추가
      list.AddFirst("AA");
      Console.WriteLine("\n맨 앞에 노드를 추가했습니다...");
      Console.WriteLine("업데이트된 노드 개수 = " + list.Count);
      Console.WriteLine("업데이트된 LinkedList의 요소들");
      foreach (string res in list){
         Console.WriteLine(res);
      }
   }
}

실행 결과

Count of nodes = 6
Elements in LinkedList...
A
B
C
D
E
F
Count of nodes...UPDATED = 9
Elements in LinkedList...UPDATED
A
B
C
D
E
F
G
H
I 

We added a node in the beginning... Count of nodes...UPDATED = 10
Elements in LinkedList...UPDATED
AA
A
B
C
D
E
F
G
H
I

실행 결과를 보면 "AA"가 AddFirst() 호출 이후 리스트의 가장 첫 번째 위치에 삽입되었고, 전체 노드 개수가 9개에서 10개로 증가한 것을 확인할 수 있습니다.

예제 2: 정수 LinkedList에서 AddFirst 사용하기

이번에는 정수 타입 LinkedList에서 AddFirst()를 두 번 연속 호출하는 예제입니다. AddFirst()를 여러 번 호출하면 나중에 추가한 값이 더 앞쪽에 위치하게 됩니다.

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);
      
      Console.WriteLine("노드 개수 = " + list.Count);
      Console.WriteLine("LinkedList의 요소들...");
      foreach (int res in list){
         Console.WriteLine(res);
      }
      
      // 시작 부분에 노드 두 개 추가
      list.AddFirst(500);
      list.AddFirst(600);
      
      Console.WriteLine("\n맨 앞에 노드를 추가했습니다...");
      Console.WriteLine("업데이트된 노드 개수 = " + list.Count);
      Console.WriteLine("업데이트된 LinkedList의 요소들");
      foreach (int res in list){
         Console.WriteLine(res);
      }
   }
}

실행 결과

Count of nodes = 4
Elements in LinkedList...
100
200
300
400

We added a node in the beginning... Count of nodes...UPDATED = 6
Elements in LinkedList...UPDATED
600
500
100
200
300
400

핵심 정리

  • AddFirst(T value): LinkedList의 시작 부분에 새 노드를 추가합니다.
  • AddLast(T value): LinkedList의 끝 부분에 새 노드를 추가합니다.
  • AddFirst()를 연속으로 호출하면 마지막에 추가한 값이 리스트의 맨 앞에 위치합니다.
  • LinkedList는 양방향 연결 리스트로 구현되어 있어 맨 앞과 맨 뒤에 요소를 추가하는 작업이 모두 O(1)의 시간 복잡도를 가집니다.
  • Count 속성으로 현재 리스트에 포함된 노드의 총 개수를 확인할 수 있습니다.