最小结点移到链表的最前面
题目
已知非空线性表第一个结点由list指出。请写一算法,将链表中中最小的结点移到链表最前面。
分析
此题与上面一道 “删除链表中值域最大的结点”的题大同小异,可以点击看看。
代码
// 已知非空线性表第一个结点由list指出。请写一算法,将链表中中最小的结点移到链表最前面。
LinkList MINHEAD(LinkList list){
LinkList p,r,s,q;
p=list;
r=p;
q=p;
p=p->link;
while (p!=NULL){
if (q->data>p->data){
s=r;
q=p;
}
r=p;
p=p->link;
}
if (q!=list){
s->link=q->link;
q->link=list;
list=q;
}
return list;
}