用C语言编写一个删除单链表中重复的结点的程序,该怎么写??

2024-12-27 15:49:55
推荐回答(2个)
回答1:

简单给你说一下思路:
肯定要遍历几次链表 必须有一个保存位置的指针 (用来从头到尾遍历链表),还要有一个操作指针(拿操作指针和保存位置指针进行比较,看是否是重复的) ,因为在 单链表中不太容易删除当前结点,因此必须有一个记录操作指针前一位置的指针
需要的指针就是这么多,基本过程是保存位置指针 从 头到尾 遍历 ,在循环内部 操作指针 要遍历到尾部 ,看是否有结点的存的内容跟 保存位置指针的一样,如果一样,要删除 (在这过程中会用到操作指针的前一指针,因此在操作指针遍历的时候要记得积累操作指针的前已指针)

回答2:

如果*p 和 *(p->next)一样
那么 ptemp = p->next
然后p = ptemp-next;
free(ptemp)