본문 바로가기

C Language

temp->right->left = top vs temp = top

 

스택연산예시

 

`temp->right->left = top`과 `temp = top`은 매우 다른 연산입니다. 이 코드의 목적과 동작을 자세히 설명하겠습니다.

## 코드의 목적

이 `pop_top` 함수는 스택의 최상위 요소를 제거하고 반환하는 역할을 합니다. 이 과정에서 스택의 구조를 올바르게 유지해야 합니다.

## 코드 분석

1. `top = stack->top`: 스택의 최상위 노드를 가리킵니다.
2. `temp = top->right`: 실제로 제거할 노드(top 바로 다음 노드)를 temp에 저장합니다.
3. `temp->right->left = top`: 제거할 노드의 다음 노드의 왼쪽 링크를 top으로 연결합니다.
4. `top->right = temp->right`: top의 오른쪽 링크를 제거할 노드의 다음 노드로 연결합니다.

## temp->right->left = top의 의미

이 라인은 스택에서 노드를 제거한 후 남은 노드들의 연결을 올바르게 유지하기 위한 것입니다. 제거되는 노드(temp) 다음 노드의 왼쪽 링크를 top에 연결함으로써, 스택의 연속성을 유지합니다.

## temp = top과의 차이점

`temp = top`으로 대체한다면:
1. temp가 top을 가리키게 되어, 원래의 temp(제거하려던 노드)에 대한 참조를 잃게 됩니다.
2. 스택의 구조가 올바르게 유지되지 않습니다.
3. 실제로 노드를 제거하는 동작이 이루어지지 않습니다.

## 시각화

변경 전:
```
top -> [A] <-> [B(temp)] <-> [C] <- bottom
```

변경 후:
```
top -> [A] <-------------> [C] <- bottom
       [B(temp)] (반환됨)
```

이렇게 함으로써 [B] 노드가 스택에서 제거되고, [A]와 [C]가 직접 연결됩니다.

따라서, `temp->right->left = top`은 스택의 구조를 올바르게 유지하면서 노드를 제거하는 데 필수적인 단계입니다.

'C Language' 카테고리의 다른 글

스택 사이즈 변수 메모  (0) 2025.01.25
CodeLLDB 설치후 launch.json 파일  (0) 2025.01.25
초기 각도를 변경 방법  (0) 2025.01.25
리눅스에서 마스크 0 의 의미  (0) 2025.01.25
isometric vs perspective  (0) 2025.01.24