728x90
값이 같은 노드를 삭제하는 함수를 작성해야 한다.
SinglyLinkedListNode* removeDuplicates(SinglyLinkedListNode* head) {
SinglyLinkedListNode* tmp1 = head;
SinglyLinkedListNode* tmp2 = head->next;
SinglyLinkedListNode* t_free;
while(tmp1->next != NULL){
if(tmp1->data == tmp2->data){
t_free = tmp2->next;
tmp1 -> next = t_free;
free(tmp2);
tmp2 = tmp1->next;
}
else{
tmp1 = tmp1->next;
tmp2 = tmp2->next;
}
}
return head;
}
임시 노드를 3개 만들고 값이 같은 경우에는 이후에 나온 값이 같은 노드를 free를 해서 아예 메모리를 해제시킨다.
SMALL
'Programming > C C++' 카테고리의 다른 글
[DS] Tree: Height of a Binary Tree (0) | 2020.11.23 |
---|---|
Cats and a Mouse (0) | 2020.11.22 |
[DS] Print in Reverse (0) | 2020.11.08 |
Angry Professor (2) | 2020.11.08 |
Eletronics Shop (0) | 2020.11.08 |