Cắt danh sách liên kết theo đk

void Separating_List(List &l,List &l1 , int x)
{
	Node* p=l.first,*pketruoc=l.first,*pkesau=p->link;
	int k;
	while(p!=NULL)
	{
		k=0;
		if((p->data)>2)
			{
				if(pketruoc=l.first)
					l.first=pkesau;
					k=3;
				if(pkesau=NULL)
					{
					pketruoc->link=NULL;
					k=2;
					}
				
				AddFirst(l1,p);
				p->link=NULL;
				pketruoc->link=pkesau;
				k=1;
			}
		if(k==2)
			break;
		if(k==1)
		p=pkesau;
		if(k==3)
		p=l.first;
		else
		{	pketruoc=p;
			p=p->link;
			pkesau=p->link;
		}
	}
}

hàm của mình là cắt các phần tử lớn hơn 2 danh sách l sang danh sách l1, mình làm mãi vẫn sai mọi người cho ý kiến với

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?