단일연결리스트 원하는 노드삭제 함수 구현
희선
질문 제목 : 단일 연결리스트 원하는 노드 삭제 함수 구현질문 요약 :삭제할노드의 이전노드로 이동질문 내용 :
link deletnode(link head,int n)
{
int i;
link temp,temp2;
temp=head;
for(i=0;in-1;i++)
{
temp=temp-next;// 삭제할 노드 위치
}
temp=temp-next;//삭제할 노드의 다음 노드
head-next=temp;//헤더랑 삭제할 노드의 다음노드연결
return head;
}
이런식으로 코딩하면
1-2-3-4-5연결리스트가 이런식이라면... 삭제할노드의 이전노드가 헤더라서 2번 노드 밖에 삭제가 돼지 않는데요
다음 같이 코딩하면
link deletnode(link head,int n)
{
int i;
link temp,temp2;
temp=head;
for(i=0;in-1;i++)
{
temp=temp-next;// 삭제할 노드 위치
}
temp=temp-next;//삭제할 노드의 다음 노드
temp2=head;
for(i=0;in;i++)
{
temp2=temp2-next;// 삭제할 노드의 이전 노드
}
temp2=temp; //연결
return temp2;
}
이렇게 하면 노드가 삭제가 돼지 않는데 삭제할노드 이전노드로 이동하려면 어떻게 해야하나요?? 일단은 물리적이 아닌 논리적으로만 노드삭제를 하고 싶은데 잘 돼지가 않네요.
-
새
for문에서 n-1보다는 n이 클텐데 n-1은 삭제할 노드고 n은 삭제할 노드 이전으로 되어있네요.