我正在尝试C程序从排序链接列表中删除重复项,我正在使用遍历列表从开始节点的简单概念。遍历时,将每个节点与下一个节点进行比较。如果下一个节点的数据与当前节点相同,那么我删除下一个节点。从排序的链接列表中删除重复的元素
我的代码是:
struct node *remove_dup(struct node *start)
{
struct node *p,*tmp;
p=start;
while(p!=NULL)
{
if(p->info==p->link->info)
{
tmp=p->link;
p->link=p->link->link;
free(tmp);
}
p=p->link;
}
return start;
}
它不给我正确的答案!我的执行有什么问题?我的观念错了吗?
什么是不会产生正确结果的输入示例? – Xymostech 2013-05-04 13:55:50
'p = p-> link;'语句需要进入'else'分支。 – 2013-05-04 13:56:05
你有什么错误吗? – 2013-05-04 13:56:12