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

C#으로 연결 리스트에서 n번째 노드 삭제하는 방법

연결 리스트 생성 및 요소 추가

먼저 연결 리스트(Linked List)를 생성하고 몇 가지 요소를 추가합니다.

Demo list = new Demo();
list.Push(50);
list.Push(100);
list.Push(150);

이제 헤드 노드(head node)에서 n번째 요소를 삭제하려면, 삭제하고자 하는 위치 값을 매개변수로 전달하면 됩니다. 예를 들어 값으로 1을 전달하면 헤드 노드 자체가 삭제됩니다.

예제 코드

if (val == 1) {
   head = head.Next;
   return;
}
// n은 삭제하려는 노드 바로 앞의 노드를 가리킵니다
Node n = head;
// m은 삭제 대상인 노드입니다
Node m = head.Next;
for (int i = 2; i < val; i++) {
   n = n.Next;
   m = m.Next;
}
n.Next = m.Next;

위 코드에서는 삭제하려는 노드의 바로 앞에 있는 노드를 가리키기 위해 다음과 같이 설정했습니다.

Node n = head;

동작 원리

삭제 로직은 다음과 같이 동작합니다.

  • val == 1인 경우: 헤드 노드를 삭제해야 하므로, head 포인터를 다음 노드(head.Next)로 이동시킨 후 종료합니다.
  • 그 외의 경우: 반복문을 통해 포인터 n은 삭제할 노드의 이전 노드를, 포인터 m은 삭제 대상 노드를 각각 가리키도록 이동시킵니다.
  • 마지막으로 n.Next = m.Next;를 실행하여 삭제 대상 노드를 리스트에서 제거합니다. 이렇게 하면 이전 노드가 삭제될 노드의 다음 노드를 직접 가리키게 되어, 해당 노드는 연결 리스트에서 자연스럽게 분리됩니다.