我有一个几乎排序的链表,其中至少包含两个元素,仅仅是不同的,只有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)
我应该改变它才能正常工作?