编写一个函数,把给定链表的数据项中最大的数放在最后一位
{
link u ,pre,max;
u = t->next;
pre = t;
max = u;
while(u->next != NULL)
{
if(u->next->item > max->item)
{
max = u->next;
pre = u;
}
u = u->next;
}
if(max != t->next)
{
pre->next = max->next;
max->next = t->next;
t->next = max;
}
}
大神们指导下,新手,这个函数是把最大的放在第一个,怎么把最大的放在最后啊,求修改后的代码
[解决办法]
{
link u ,pre,max;
u = t->next;
pre = t;
max = u;
while(u->next != NULL)
{
if(u->next->item > max->item)
{
max = u->next;
pre = u;
}
u = u->next;
}
//while循环找出最大的元素
//将最大的元素放到最后
//找到链表的尾 ,从你的声明可以看出t应为头指针
link temp=t;
while(temp->next!=NULL)
temp=temp->next;
//其实没必要将max移到队尾,将max和temp的值互换一下也可以啊
if(temp!=max)
{
ElementType var=temp->item; //ElementType为结点中数据的类型
temp->item=max->item;
max->item=var;
}
//你当然也将max移到队尾
if(max != t->next)
{
pre->next=max->next;
temp->next=max;
max->next=NULL;
}
}