단일 링크 된 목록에서 노드 a를 삭제하는 코드를 작성했습니다. 나는이 코드를 테스트했고 결과물은 괜찮습니다. 나는이 코드에서 마지막 "else"블록에 대해 약간 혼란 스럽다. 맞습니까? 내 말은, (p-> ptr) 노드를 해제 한 후에도 옆에있는 노드에 계속 액세스 할 수 있다는 것입니다.이 코드는 연결된 목록에서 노드를 삭제할 수 있습니까?
NODE* delNODE(NODE *HEAD,int position){
int k=1;
NODE *p;
if(HEAD==NULL){
printf("List Empty\n");
return HEAD;
}
p=HEAD;
if(position==1){
p=HEAD;
HEAD=HEAD->ptr;
free(p);
printf("Success!\n");
return HEAD;
}
else{
while(k<position-1){
k++;
p=p->ptr;
}
if((p->ptr)==NULL)
{
printf("NO such position\n");
}
else{
free(p->ptr);
p->ptr=p->ptr->ptr;
printf("Success!\n");
}
}
return HEAD;
}
@pala도 잘못된 것이라고 지내요. –