Giữ lại phần tử đầu tiên void RemoveDuplicate(Ref& head) { Ref cur = head; while (cur != NULL) { int temp = 0; Ref pre = cur; Ref next = cur->Next; while (next != NULL) { if (cur->key == next->key) { Ref p = next; pre->Next = next->Next; next = next->Next; delete p; temp++; } else { pre = pre->Next; next = next->Next; } } if(temp == 0) cur = cur->Next; } } Xóa all void RemoveAllDuplicate(Ref& head) { Ref p = head; int flag; while (p) { flag = 0; Ref cur = p; Ref next = p->Next; while (next) { if (next->key == p->key) { Ref temp = next; cur->Next = next->Next; next = next->Next; delete temp; flag = 1; } else { cur = cur->Next; next = next->Next; } } if (flag) { if (p == head) { Ref temp = p; head = p->Next; p = p->Next; delete temp; } else { Ref temp = head; Ref dele = p; while (temp->Next != p) temp = temp->Next; temp->Next = p->Next; p = p->Next; delete dele; } } else p = p->Next; } }