求助,帮忙写一个算法。 已知单链表L,写一算法,删除其重复结点
算法思路:
用指针p指向第一个数据结点,从它的后继结点开始到表的结束,找与其值相同的结点并删除之,p指向下一个,依次类推,p指向最后结点时算法结束。
算法实现:
void pur_LinkList(LinkList H)
{ LNode *p,*q,*r;
p=H->next; //指向第一个结点
if(p==NULL) return;
while (p->next)
{ q=p;
while (q->next) // 从*p的后继开始找重复结点
{ if (q->next->data==p->data)
{ r=q->next; //找到重复结点,用r指向,删除*r
q->next=r->next;
free(r);
} /*if*/
else q=q->next;
} /*while(q->next)*/
p=p->next; //指向下一个,继续
} /*while(p->next)*/
}