단순연결리스트 마지막 노드 삭제 질문입니다.
갤원
2023.04.01
질문 제목 : 소스의 마지막 메모리 해제 부분질문 내용:void deletelastnode(listheader *head)//마지막 노드제거
{
listnode *previous;
listnode *current;
if(head-header==null){return;}//헤더가 공백일경우 연산중지
if(head-header-node==null)//노드가 한개만 있는 경우
{
free(head-header);
head-header=null;
return;
}
else //리스트에 노드가 여러개 있는 경우
{
previous=head-header;
current=head-header-node;
while(current-node!=null)
{
previous=current;
current=current-node;
}
free(current);
previous-node=null: }
}빨간색 표시된 부분 free(current)가 아니라 free(previous)가 아닌가요? 현재포인터가 널이라는 것은 마지막 노드에 도달했다는 것이라는 소리니깐 free(previous) previoise=null을 해줘야 하는 게 맞는 게 아닌지요?
-
좋아해
감사합니다
-
내꺼하자
free(previous)네요