我想按升序對鏈表中的元素進行排序。 我寫了下面的代碼:
鏈接列表中的排序元素
void don(struct node *head)
{
struct node *god,*tmp=head,*current,*bak;
for(god=head;god->next!=NULL;god=god->next)
{
current=god->next;
for(bak->next=tmp;(bak->next)!=(god->next);bak=bak->next)
{
if((current->data)<(bak->next->data))
{
god->next=current->next;
current->next=god;
bak->next=current;
}
}
}
}
但其產生到infinte循環。
請幫助糾正代碼:)!
我想要它做它用這種方式
5-2-3-1-4
2-5-3-1-4
2-3-5-1-4
1-2-3-5-4
1-2-3-4-5
這種看起來像冒泡排序,但你能澄清你想使用哪種算法? –
@timBiegeleisen它的插入排序 –
'for(bak-> next = tmp;' - 並且您設置了'bak' *其中*正確嗎?您的代碼正在解引用不確定的指針並調用*未定義的行爲*。我停止閱讀,所以肯定會有更多 – WhozCraig