void Delete(int n){
int i;
Node* tmp = head;
if(n == 1){
head = tmp -> ptr;
free(tmp);
return;
}
for(i = 0; i < n-2; i++){
tmp = tmp -> ptr;
}
Node* tmp1 = tmp -> ptr;
tmp -> ptr = tmp1 -> ptr;
free(tmp1);
}
다음의 상태에서
Delete(3); 을 한다면?
Node* tmp = head;
for(i = 0; i < n-2; i++){
tmp = tmp -> ptr;
}
Node* tmp1 = tmp -> ptr;
tmp -> ptr = tmp1 -> ptr;
free(tmp1);
함수를 빠져나가면 다음과 같이 마무리된다.
만약, head 바로 뒤의 노드를 삭제한다면 어떻게 될까?
이어서 Delete(1)을 해보자.
Node* tmp = head;
if(n == 1){
head = tmp -> ptr;
free(tmp);
return;
}
함수를 빠져나가면 다음과 같이 마무리된다.