链表中带有冒泡排序的c ++问题

时间:2015-01-05 14:17:21

标签: c++ linked-list bubble-sort

我需要一些带有链表的c ++冒泡排序帮助。我需要排序一个int数字列表,如55-10-50-33。我用过这段代码

struct lista2{
    int val;
    lista2 *next;
};


void swap(int& x, int& y){
    int tmp ; tmp = x ; x = y ; y = tmp ;
}


ptr_lista2 sort (ptr_lista2 head){
    ptr_lista2 i,j;
    for(i=head; i->next!=NULL;i=i->next){
        for (j=head;j->next!=NULL;j=j->next){
            if(i->val < j->val) swap(i->val, j->val);
        }
    }
    return (head);
}

此代码返回10-50-55-33。为什么?错误在哪里?我需要10-33-50-55 !!

非常感谢所有人!

1 个答案:

答案 0 :(得分:2)

它不会转到最后一个元素,因为最后一个元素的下一个指针是NULL,

你需要制作“j!= nullptr;”

你将这些家伙与自己进行比较(这不是你问题的原因,但它看起来并不酷:D)

如果你想修复它,请制作“j = i-&gt; next;”