2013-05-07 132 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