70,020
社区成员




nodetype *order(nodetype *h)//将一个无序的单链表排列成一个升序的单链表
{
nodetype *head,*p=h,*q,*r,*t;
head=(nodetype *)malloc(sizeof(nodetype));//head是哨兵
head->data=0;//存放有序单链表的节点的个数
head->next=NULL;
while(p!=NULL)
{
if(head->data==0)//单链表为空
{
head->next=p;
q=p->next;
p->next=NULL;
p=q;
}
else
{
q=head->next;
r=head;
while(q!=NULL&&p->data>q->data)//找到r节点,将p节点插入到其后
{
r=q;
q=q->next;
}
t=p->next;
p->next=r->next;
r->next=p;
p=t;
}
head->data++
}
t=head;
head=head->next;
free(t);//删除哨兵
return head;
}