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;
	}
}