我是一个几乎排过序的链表,至少包含两个元素,这些元素都是不同的,只有1
个元素不在它应该在的位置上。以下是一些示例:
28 (144) 44 52 60
60 68 76 84 (65) 100
结构体如下所示:
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;
}
我需要更改哪些内容才能使它正常工作?
while
语句。恰好一个if
语句。没有任何类似额外的prev
指针。应该只有一个指针。如果你想出的任何东西有更多的while
或if
语句,或者使用了多个指针变量(除了头指针,你称之为l
),那么它就是错误的。 - Sam Varshavchikis_sorted_until
是什么? - Philip Moreira{10, 25, 20, 30}
中,是20
还是25
次序错误? 答案:20
是次序错误的,因为它不符合升序排列。 - paxdiabloT*&
没有任何矛盾(或混乱的思维)。 - Davis Herring