求助c语言数据结构代码问题

[复制链接]
查看11 | 回复2 | 2021-1-27 05:27:05 | 显示全部楼层 |阅读模式
题目是这样的


这是我的代码
#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;
pTail->pNext=pNew;
pNew->pNext=NULL;
pTail=pNew;
}
returnpHead;
}
voidtraverse_list(PNODEpHead)
{
PNODEp=pHead->pNext;
while(p!=NULL)
{
printf("%d",p->data);
p=p->pNext;
}
printf("\n");
return;
}
voidsort(PNODEpHead,intx)
{
inti=1;
PNODEp=(PNODE)malloc(sizeof(NODE));
p=pHead->pNext;
PNODEr=(PNODE)malloc(sizeof(NODE));
while(p!=NULL&&p->data>=x)
{
i++;
p=p->pNext;
}
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);
}
intmain()
{
intn,x;
PNODEpHead=NULL;
while(scanf("%d",&n)!=EOF)
{
pHead=create_list(n);
scanf("%d",&x);
if(n==0)
{
printf("%d",&x);
}
else
{
sort(pHead,x);
traverse_list(pHead);
}
}
return0;
}
编译没错代码运行超时停不下来==看了半天还是没懂为什么错了求助大佬们
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:27:05 | 显示全部楼层
#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我用指针,目的是获取位置信息~
回复

使用道具 举报

千问 | 2021-1-27 05:27:05 | 显示全部楼层
谢谢哇终于搞明白了这个代码了!
感谢!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行