구현의 디테일과 함수의 인자에 대한 설명이 좀 많이 부족한데... 지금 단방향 연결리스트를 구현하고 계시는 게 맞나요? link 멤버변수는 리스트 각 노드의 바로 앞 노드를 가리키는 포인터인가요? 지금 함수는 p 뒤에 새로운 노드를 추가하는 함수인 건가요? p가 NULL인 경우엔 어떤 동작을 원하시는 건가요?
// phead: 리스트의 헤드 포인터의 포인터
// p : 선행 노드
// new_node : 삽입될 노드
void insert_node(ListNode **phead, ListNode *p, ListNode *new_node)
{
if( *phead == NULL ){ // 공백리스트인 경우
new_node->link = NULL;
*phead = new_node;
}
else if( p == NULL ){ // p가 NULL이면 첫번째 노드로 삽입
new_node->link = *phead;
*phead = new_node;
}
else { // p 다음에 삽입
new_node->link = p->link;
p->link = new_node;
}
}
자료구조 공부하는 피피티에 있는 코드인데 저 함수를 메인함수에서 호출하여 사용하는 방법부터 저 두번째 옵션에대해 의문이 있습니다ㅠ
댓글을 작성하려면 로그인해야 합니다.
ysysysy3333 1년 전
각주 넣은 부분이 선행노드가 null인 경우인데 왜 새로운 노드에 링크가 null이 아닌 헤드포인터인지 잘 모르겠습니다ㅠㅠ