小编Phi*_*ira的帖子

如何从几乎排序的链表中分离错位元素?

我有一个几乎排序的链表,其中至少包含两个元素,仅仅是不同的,只有1元素不在它的位置.一些例子:

28 (144) 44 52 60
60 68 76 84 (65) 100
Run Code Online (Sandbox Code Playgroud)

结构看起来像这样:

struct node {node * next; int val;}

这是我的分离功能(并不总是有效):

node *detach(node *&l)
{
    if(l->val>l->next->val)
    {
        node *removed=l;
        l=l->next;

        return removed;
    }

    node *first=l->next->next;
    node *prev=l;

    while(first!=NULL)
    {
        if(prev->next->val>first->val)
        {
            node *removed=prev->next;
            prev->next=removed->next;

            return removed;
        }

        prev=prev->next;
        first=first->next;
    }

    return NULL;
}
Run Code Online (Sandbox Code Playgroud)

我应该改变它才能正常工作?

c++ sorting linked-list list insertion-sort

8
推荐指数
2
解决办法
298
查看次数

标签 统计

c++ ×1

insertion-sort ×1

linked-list ×1

list ×1

sorting ×1