鱼C论坛

 找回密码
 立即注册
查看: 4438|回复: 2

删除单链表重复元素

[复制链接]
发表于 2017-4-23 15:06:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Node *CompareList(Node *pHead)//删除重复元素
{
        Node *pNext,*tmp;
        if(pHead == NULL)
        {
                printf("链表为空,无法操作\n");
                exit(0);
        }
        else
        {
                while(pHead !=NULL)
                {
                        pNext = pHead->next;
                        while(pNext != NULL)
                {
               
                        if(pHead->Elem == pNext->Elem)
                        {
                                tmp = pNext->next;
                                free(pNext);
                                pNext = tmp;
                        }
                        else pNext = pNext->next;
                }
                        pHead = pHead->next;
                }
        }
    return pHead;
}
此算法不知道哪里出问题了,运行完之后删除了所有的元素。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-6 13:36:15 | 显示全部楼层
为什么要回传已经指到底的节点
操作看上去没问题,如果你是把最后回传的当头结点,那当然没任何元素
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-14 12:02:28 | 显示全部楼层
别的不说,就pHead -> Elem 就错了,头结点本来就什么数据都没有,只有一个指针而已
还有,我想说你的判断从头就错了,pHead 本来就是虚构出来的,你用来与 NULL 什么的比较根本没有意义
另外,你把pNext = pHead -> next; 放到循环里,每次都要执行一次pNext = pHead -> next;  这样子你的循环总是在原地转圈圈,就是第零步和第一步之间来回走,然后你的第二层循环,如果条件成立,就一直删第一个元素,虽然我不知道为什么会成立,但是看你这话是成立了,所以一直删到没有元素为止
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 19:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表