使用链接列表的这个排序代码出了什么问题?

时间:2014-11-04 18:36:27

标签: c++ sorting

我想说我刚开始学习C ++而且我对插入,删除,反转,找到位置中的元素和元素有相当好的把握。我试图使用冒泡排序(?)排序,程序崩溃。请帮帮我。

struct node
{
int data;
struct node* link;
};
typedef struct node* NODE;

NODE rearr(NODE root)
{
NODE temp=root;
while(temp!=NULL)
{
    NODE curr=temp;
    while(curr!=NULL)
    {
        if(curr->data>(curr->link)->data)
    {
        int temp1=curr->data;
        curr->data=(curr->link)->data;
        (curr->link)->data=temp1;
    }
    curr=curr->link;
    }
    temp=temp->link;
}return root;
}

也有插入和删除功能,但我没有在这里复制。如果你愿意,我会发布整个程序。

1 个答案:

答案 0 :(得分:0)

您永远不会测试curr->link是否为空。当您检查data memeber时会导致错误。

if(curr->link != NULL && curr->data>(curr->link)->data)