当前位置:首页 > 问答大全 > 求助c语言高手指点,单向链表删除重复结点的详细解答,希望有完整的程序和语句的注释,小弟初学,多谢啦~

求助c语言高手指点,单向链表删除重复结点的详细解答,希望有完整的程序和语句的注释,小弟初学,多谢啦~

被浏览: 0次 2023年09月11日 23:21
热门回答(1个)
游客1

具体代码如下,已经添加注释
#include

struct Node
{
int num;
struct Node *next;
};

void dubdel(struct Node *head)
{
struct Node *cur = head; //用于遍历整个链表
struct Node *find = NULL; //用于查找与cur相同的结点
while(cur != NULL)
{
find = cur;
while (find->next != NULL) //从cur的下一个结点开始比较
{
if (find->next->num != cur->num) //不相等继续查找是否有与cur相同的结点
find = find->next;
else { //相等则删戚棚除该结点
struct Node *tmp;
tmp = find->next; //tmp指向与cur相等的结点
find->next = find->next->next; //将结点从链表中剔高租则除
free(tmp); //释放该结点
}
}
cur = cur->next; //查找完成型敬则向后移动
}
}