#include
#include
typedefstructNode{
intdata;
structNode*pNext;
}NODE,*PNODE;
PNODEcreate_list(intn)
{
inti;
intval;
PNODEpHead=(PNODE)malloc(sizeof(NODE));
if(NULL==pHead)
{
printf("分配失败,程序终止!\n");
exit(-1);
}
PNODEpTail=pHead;
pTail->pNext=NULL;
for(i=0;idata=val;
pNew->pNext=NULL;
pTail->pNext=pNew;
pTail=pNew;
}
returnpHead;
}
voidtraverse_list(PNODEpHead)
{
PNODEp=pHead->pNext;
while(p!=NULL)
{
printf("%d",p->data);
p=p->pNext;
}
printf("\n");
return;
}
voidsort(PNODEpHead,int*x)
{
inti=1;
//PNODEp=(PNODE)malloc(sizeof(NODE));
PNODEp;
PNODEr=(PNODE)malloc(sizeof(NODE));
if(!r)
exit(0);
r->data=*x;
//r->pNext=NULL;
//p=pHead->pNext;
p=pHead;
//while(p!=NULL&&p->data>=x)
while(p->pNext&&p->pNext->datapNext;
}
r->pNext=p->pNext;
p->pNext=r;
*x=i;
#if0
r->data=x;
r->pNext=p->pNext;
p->pNext=r;
if(i==1)
{
r->data=x;
r->pNext=p;
pHead->pNext=r;
}
printf("%d",i);
#endif
}
intmain()
{
intn,x;
PNODEpHead=NULL;
while(scanf("%d",&n)!=EOF)
{
pHead=create_list(n);
scanf("%d",&x);
if(n==0)
{
//printf("%d",&x);
printf("%d",x);
}
else
{
sort(pHead,&x);
printf("%d\n",x);
traverse_list(pHead);
}
}
return0;
}
供参考~
楼主判断有问题,
//while(p!=NULL&&p->data>=x)
while(p->pNext&&p->pNext->data
是>=x还是<=x的问题。
其他问题建议对比代码找一下自己的问题~
这里的x我用指针,目的是获取位置信息~
|