我正在尝试通过修改链接而不是交换data.i'm使用选择sort来排序链接列表。我不知道我哪里出错。我是初学者请帮助我。
struct node
{
int data;
node* link;
};
node* p;
void sort()
{
node* temp = p;
node* save;
node* prev;
node* tprev;
node* push = new node;
tprev = NULL;
for (; temp != NULL; temp = temp->link)
{
push = temp->link;
for (; push != NULL; push = push->link)
{
if (push->data<temp->data)
{
save->link = temp->link;
temp->link = push->link;
push->link = save->link;
prev->link = temp;
tprev->link = push;
}
prev = push;
}
tprev = temp;
}
}
答案 0 :(得分:2)
void sort(){
node *temp, *push;
node *tprev, *pprev;
node *save;
tprev = NULL;
for (temp = p; temp != NULL; temp = temp->link){
pprev = temp;
for (push=temp->link; push != NULL; push = push->link){
if (push->data < temp->data){
save = temp->link;
temp->link = push->link;
if(save == push)
push->link = temp;
else
push->link = save;
if(pprev != temp)
pprev->link = temp;
if(tprev)
tprev->link = push;
else
p = push;
save = temp;
temp = push;
push = save;
}
pprev = push;
}
tprev = temp;
}
}