上一篇实现的链表去重,保留了重复元素的第一个,现在要实现的是将重复的元素全部删除。本篇是删除了重复元素中的前一个,不过使用之前需要先将链表排序。
所用到的类与java实现单链表的部分翻转
中的相同
/*将链表中重复的元素全部删除*/
public void DeleteDupliacateNode1(Node head)
{
Node pPre=head;
Node pCur=pPre.next;
Node pNext;
boolean bDup;
while(pCur!=null)
{
pNext=pCur.next;
bDup=false;
while(pNext!=null && pCur.data==pNext.data)
{
pPre.next=pNext;
pCur=pNext;
pNext=pCur.next;
bDup=true;
}
if(bDup)//pCur与原数据重复,删除
{
pPre.next=pNext;
}
else
{
pPre=pCur;//pCur没有重复,将pPre向后移动
}
pCur=pNext;
}
}