如何从未排序的链接列表中删除重复项

bobaloogie

我当前的remove_repeats函数出现了段错误。

remove_repeats函数:

void remove_repeats(node*& head){
    node* cursor = head;
    node* ptr;
    node* duplicate;

    while(cursor != NULL){
        ptr = cursor;
        while(ptr -> link != NULL){
            if(cursor -> data == ptr -> link -> data){
                duplicate = ptr -> link;
                ptr -> link = ptr -> link -> link;
                delete duplicate;
            }
            ptr = ptr -> link;
        }
        cursor = cursor -> link;
    }
}

主要:

int main(){
    int start, stop;
    int split;
    node* head = NULL;
    node *lesser;
    node * greater;

    start = time(NULL);
    build_list(head);
    stop = time(NULL);
    cout<<"Time to build list = "<<stop - start <<"seconds.\n";
    start = time(NULL);
    show_list(head);
    stop = time(NULL);
    cout<<"Time to print list = "<<stop - start<<"seconds.\n";
    cout<<"Size of the list = "<<size(head)<<endl;
    remove_repeats(head);



return 0;
}

基本上,build_list函数构建一个链表,该链表包含2000个随机整数,范围从1到500。

show_list函数将链接列表的内容输出到屏幕。

size函数返回链表中节点的数量。

我认为问题在于最后一个节点数据是重复数据,而之后没有节点可分配给ptr的链接。情况可能并非如此,但是如果是这样,我不确定该如何处理。

来自莫斯科的弗拉德

这个说法

ptr = ptr -> link;

应该是前面if语句中else部分的子语句。这个给你。

void remove_repeats( node*&head )
{
    for ( node *cursor = head; cursor != nullptr ; cursor = cursor->link )
    {
        for ( node *ptr = cursor; ptr->link != nullptr; )
        {
            if ( cursor->data == ptr->link->data )
            {
                node *duplicate = ptr->link;
                ptr = ptr->link->link;
                delete duplicate;
            }
            else
            {
                ptr = ptr->link;
            }
        }
    }
}

替代函数定义可以如下所示。

void remove_repeats( node*&head )
{
    for ( node *cursor = head; cursor != nullptr ; cursor = cursor->link )
    {
        for ( node **ptr = &cursor->next; *ptr != nullptr; )
        {
            if ( cursor->data == ( *ptr )->data )
            {
                node *duplicate = *ptr;
                *ptr = ( *ptr )->link;
                delete duplicate;
            }
            else
            {
                ptr = &( *ptr )->link;
            }
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从未排序的链接列表中删除重复项(python)

来自分类Dev

此Java代码如何工作?从未排序的链接列表中删除重复项

来自分类Dev

从未排序的数组中删除重复项

来自分类Dev

从排序列表中删除重复项

来自分类Dev

如何从对象列表中删除重复项

来自分类Dev

如何从列表中删除连续的重复项?

来自分类Dev

如何删除列表中的重复项(Raku)

来自分类Dev

如何从对象列表中删除重复项

来自分类Dev

如何从sql列表中删除重复项?

来自分类Dev

从未排序的字符串中删除重复项的最佳解决方案

来自分类Dev

如何从列表中删除重复项而无需在Java中重新排序?

来自分类Dev

从排序列表中删除重复项(新方法)

来自分类Dev

如何解析python中的文本文件以创建删除重复项的排序列表

来自分类Dev

我正在尝试从链接列表中删除重复项,但是重复项仍然存在

来自分类Dev

删除列表中的重复项

来自分类Dev

如何从元组列表中删除重复项,但保持原始顺序

来自分类Dev

如何从对象列表中删除(通过linq)重复项

来自分类Dev

如何从序言列表中删除所有重复项

来自分类Dev

如何从字符串列表中删除重复项?

来自分类Dev

如何根据列表项中先前的发射删除重复项

来自分类Dev

删除插入排序中的重复项

来自分类Dev

从排序的char数组中删除重复项

来自分类Dev

删除插入排序中的重复项

来自分类Dev

删除列表列表中的重复项

来自分类Dev

展平,删除重复项并在python中对列表列表进行排序

来自分类Dev

从SML中的列表中删除重复项

来自分类Dev

从Scheme中的列表中删除重复项

来自分类Dev

从列表中的元组中删除重复项

来自分类Dev

避免在基于列表理解的快速排序中无意中删除重复项?

Related 相关文章

  1. 1

    从未排序的链接列表中删除重复项(python)

  2. 2

    此Java代码如何工作?从未排序的链接列表中删除重复项

  3. 3

    从未排序的数组中删除重复项

  4. 4

    从排序列表中删除重复项

  5. 5

    如何从对象列表中删除重复项

  6. 6

    如何从列表中删除连续的重复项?

  7. 7

    如何删除列表中的重复项(Raku)

  8. 8

    如何从对象列表中删除重复项

  9. 9

    如何从sql列表中删除重复项?

  10. 10

    从未排序的字符串中删除重复项的最佳解决方案

  11. 11

    如何从列表中删除重复项而无需在Java中重新排序?

  12. 12

    从排序列表中删除重复项(新方法)

  13. 13

    如何解析python中的文本文件以创建删除重复项的排序列表

  14. 14

    我正在尝试从链接列表中删除重复项,但是重复项仍然存在

  15. 15

    删除列表中的重复项

  16. 16

    如何从元组列表中删除重复项,但保持原始顺序

  17. 17

    如何从对象列表中删除(通过linq)重复项

  18. 18

    如何从序言列表中删除所有重复项

  19. 19

    如何从字符串列表中删除重复项?

  20. 20

    如何根据列表项中先前的发射删除重复项

  21. 21

    删除插入排序中的重复项

  22. 22

    从排序的char数组中删除重复项

  23. 23

    删除插入排序中的重复项

  24. 24

    删除列表列表中的重复项

  25. 25

    展平,删除重复项并在python中对列表列表进行排序

  26. 26

    从SML中的列表中删除重复项

  27. 27

    从Scheme中的列表中删除重复项

  28. 28

    从列表中的元组中删除重复项

  29. 29

    避免在基于列表理解的快速排序中无意中删除重复项?

热门标签

归档