我想排序链接列表。我有一个节点称为头,它指向下一个节点,等排序节点(链接列表)C++
但是,当我尝试按它们携带的值排序节点,我得到排序工作,因为我看到它打印出的东西在if - 声明,但我没有找回链表。我哪里做错了?
Node* head;
void sortlist(){
Node * runner = head;
Node * runner2;
for(runner = head; runner->next != NULL; runner = runner->next){
for(runner2 = runner->next; runner2->next != NULL; runner2 = runner2->next){
if(runner->freq < runner2->freq){
cout<< runner->freq<< " is LT "<<runner2->freq<< endl;
Node * temp = runner;
runner = runner2;
runner2 = temp;
}
}
}
head = runner;
}
我只收回第一个节点。
'head = runner;'。我甚至不需要深入了解这是错误的。 – UmNyobe 2013-03-26 15:54:29
交换似乎工作,但我认为我只是返回错误的节点,或者我可能失去了链接? – 2013-03-26 15:55:08
交换不起作用。你需要交换'runner-> freq'和'runner2-> freq',而不是指针本身。另外,即使你交换了正确的东西,这个代码也不会排序。 – john 2013-03-26 15:55:53