2013-05-07 220 views
0

我想用隨機數對一個填充鏈表進行排序。我所做的功能並不適用。我看不出什麼是錯的,它沒有正確排序數字。插入排序鏈接列表C++

void linked_list::SortList() 
{ 
    if(is_empty()) 
    { 
     return; 
    } 
    for(node_t *it =head; it!=tail; it = it->next) 
    { 
     int valToIns = it->value; 
     node_t *holePos = it; 
     while(holePos->prev && valToIns < it->prev->value) 
     { 
     holePos->value = holePos->prev->value; 
     holePos = holePos->prev; 
     } 
     holePos->value = valToIns; 
    } 
} 

回答

1

你用錯誤的元相比較,

while(holePos->prev && valToIns < it->prev->value) 

應該

while(holePos->prev && valToIns < holePos->prev->value) 

爲了與一個holePos點前值比較valToIns