首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C程序-从LinkedList中删除重复项

C程序-从LinkedList中删除重复项
EN

Stack Overflow用户
提问于 2017-10-22 01:04:46
回答 2查看 113关注 0票数 0

我正在尝试从链表中删除重复项。用户将插入一个值,然后,程序将检查用户的输入和链表中的值是否相同。如果它是相似的,它将删除并只在链表中保留一个。例如linkedlist=10 100。user=10。outcome=10 100而不是10 10 100。

代码语言:javascript
复制
int insertSorted(LinkedList *ll, int item)
{
    ListNode *cur = ll->head;
    int size = ll->size;
    int i;

    for (i = 0; i <= size; i++)
    {
        if ((size - i) == 0 || item < cur->item)
        {
            insertNode(ll, i, item); // function to insert the value into Linkedlist
            return i;
        }

        cur = cur->next;
    }

    ListNode *current = ll->head;
    while (current->next != NULL)
    {
        if (current->item == current->next->item)
        {
            ListNode *nextNext = current->next->next;
            free(current->next);
            current->next = nextNext;
        }

        else
        {
            current = current->next; // only advance if no deletion
        }
    }

    return -1;
}
EN

回答 2

Stack Overflow用户

发布于 2017-10-22 01:33:35

如果您总是在插入之后返回,则无法到达删除重复项的代码。我认为你需要用break代替。

另外,当你删除一个元素时,你在哪里修改链表的大小?如果我理解正确的话,应该减1。

此外,由于每次插入后都要清除重复项,因此不需要在deleting循环中进行条件推进

票数 0
EN

Stack Overflow用户

发布于 2017-10-22 01:38:06

当您插入新节点(在您的示例中值为10 )时,然后执行return i;,使其余的代码不被执行,我认为这将检查重复项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46865787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档