链表去重问题,大神来?
发布网友
发布时间:2022-05-15 18:51
我来回答
共2个回答
热心网友
时间:2024-02-27 00:25
既然已经排序,遍历条件可以这样吧:
三个指针,一个p标记当前元素,一个q标记删除后的下一个元素,一个tmp指针,指向第一个要删的元素
执行过程为三层循环:
第一层循环对p,可以循环的条件是p->next->next!=NULL
第二层循环对q,q是从p->next开始,可循环条件是q->next!=NULL,如果q和p值相同,就继续q=q->next,如果不同,就break,保持q的位置
第三层对tmp,tmp是从p->next开始,直到tmp==q终止,逐个删除
p->next=tmp->next
free(tmp);
tmp=p->next:
应该就可以解决多个重复的问题了~
热心网友
时间:2024-02-27 00:25
free(q); } p = p->next; 这里改成 free(q); } else p = p->next; 即节点出现重复,进入if语句时先不做p=p->next