要求把链表数据做插入法排序,我算法出错误了,看不出来,大家一起帮帮我啊
#include "stdio.h"
typedef struct node{
int data;
struct node *next;
}xnode;
void paixu(int n,xnode *t)
{int i,j;
xnode *p,*q,*k;
p=t;
while(p!=NULL)
{printf("%d ",p->data);
p=p->next;
}
for(i=1;i<n;i++)
{k=t;
p=t->next;
for(j=1;j<i;j++)
{p=p->next;
k=k->next;}
q=p;
k->next=p->next;
k=t;
for(j=0;j<i;j++)
{if(k->data>q->data)
break;
p=k;
k=k->next;
}
if(k->data>q->data)
{p->next=q;
q->next=k;}
else
k->next=q;
}
}
main()
{xnode *pp,*tt,*qq;
int i,j,n,shu[100];
printf("number:");
scanf("%d",&n);
printf("\ninput:");
for(i=0;i<n;i++)
scanf("%d",&shu[i]);
tt=(xnode *)malloc(sizeof(xnode));
tt->data=shu[0];
tt->next=NULL;
qq=tt;
for(i=1;i<n;i++)
{pp=(xnode *)malloc(sizeof(xnode));
pp->data=shu[i];
qq->next=pp;
qq=qq->next;
}
pp->next=NULL;
paixu(n,tt);
qq=tt;
printf("\n");
for(i=0;i<n;i++)
{printf("%d ",qq->data);
qq=qq->next;
}
printf("\n");
getchar();
}
大家帮我看看啊~~谢谢了