小弟做的一个把链表排序的算法,始终不知道哪里出错,求大侠啊
程序代码:#include<stdio.h>
#include<malloc.h>
#define OK 1
#define ERROR 0
#define ElemType int
typedef struct LNode
{
int key;
struct LNode *next;
}LNode,*LinkList;
int CreateLink_L(LinkList L,int n)
{
LinkList p,q;
int i;
ElemType e;
q=(LinkList)malloc(sizeof(LNode));
q=L;
for(i=0;i<n;i++)
{
scanf("%d",&e);
p=(LinkList)malloc(sizeof(LNode));
p->key=e;
q->next=p;
q=p;
q->next=NULL;
}
return OK;
}
int LoadLink_L(LinkList L)
{
LinkList p = L->next;
if(!L)printf("The List is empty!");
else
{
printf("The LinkList is:");
while(p!=NULL)
{
printf("%d ",p->key);
p=p->next;
}
}
printf("\n");
return OK;
}
int Paixu(LinkList L)
{
LinkList s,t,p,q;
t=L;
while(t!=NULL)\\经过我调试发现,程序始终在这里无限循环
{
p=L;
q=p->next;
while(q&&((t->key)<(q->key)))
{
p=q;
q=p->next;
}
s=t;
t=t->next;
p->next=s;
s->next=q;
}
if(!t)
return OK;
else
return ERROR;
}
int main()
{
int n;
LinkList head;
head=(LinkList)malloc(sizeof(LNode));
head->next=NULL;
printf("请输入一个数字n,建立n个结点的链表\n");
scanf("%d",&n);
CreateLink_L(head,n);
LoadLink_L(head);
Paixu(head);
LoadLink_L(head);
return 0;
}
老师让我们做的,将此链表的记录按照key递增的顺序进行就地排序。这次是真不行了,我调试了很久,大脑疲劳了,来求助一下各位大侠,算法应该是没有问题的,不知道错在哪












