【day17】
算法思想:由于单链表递增有序,所有值域相同的结点时相邻的。定义两个指针,一个指针初始指向第一个结点,另一个初始指向第二个结点,同步的遍历整个链表。遍历过程如果两个指针所指向的结点值相同,则把后一个指针指向的元素删除。
删除:双指针思想
void delete_same(LinkList &L){
LNode *pre,*p;
if(L==NULL){
exit(0);
}
pre=L->next; //两个遍历指针
p=pre->next;
while(p!=NULL){
//遍历链表
if(pre->data==p->data){
//找到重复结点
pre->next=p->next; //删除结点
free(p);
p=pre->next; //p指针指向下一个结点
}else{
//如果不重复p pre同步后移
pre=p; //保证pre永远指向p的前驱
p=p->next;
}
}