单链表排序问题
struct node{
int ID;
char name[10];
int mark;
struct node *next;
};
struct node *paixu()
{
struct node *first,*max,*p,*p_max,*tail;
if(head->next==NULL||head->next->next==NULL)
{
printf("无须排序!");
getch();
return head;
}
else
{
first=(struct node *)malloc(sizeof(node));
first->next=NULL;
max=head->next;
p=head->next;
while(head->next!=NULL)
{
for(max=head->next,p=head->next->next,p_max=head;p->next!=NULL;p=p->next)
{
if(p->next->mark>max->mark)
{
p_max=p;
max=p->next;
}
}
if(first->next==NULL)
{
first->next=max;
tail=max;
}
else
{
tail->next=max;
tail=max;
}
if(p->next!=NULL)
{
p_max->next=p->next;
}
}
tail->next=NULL;
head=first;
return head;
}
}
这是一个用来单链表排序的函数,能运行,但是进入死循环,不知道有什么问题,高手帮忙看下!
[ 本帖最后由 海风27 于 2011-8-17 11:03 编辑 ]