Programming/C C++

[DS] Delete duplicate-value nodes from a sorted linked list

값이 같은 노드를 삭제하는 함수를 작성해야 한다.

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