请教。。。链表排序~!
下面代码是我程序一部分。。~!我已经建有一链表(head),希望这段程序能为他按学号排序(p->num等均为结点里的学号),~!(p为我从原链表读出的结点,head1为排序后的新链~!)我的思路是把原来的链表结点1个个读出来,接着就用边插入边排序地插入新链~!但就是排不到序。。希望指点。。。stu *insert_num(stu *head)
{
struct stu *head1,*p,*p1,*p2,*t;
head1=NULL;
t=head;
while(t!=NULL)
{
p=t;
p1=head1;
if (head1==NULL) head1=p;
else
{
while((p->num>p1->num)&&(p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p->num<p1->num)
{
if(head1==p1) head1=p;
else p2->next=p;
p->next=p1;
}
else p1->next=p;
}
t=t->next;
}
return head1;
}