代码如下,但运行什么也没有;纯属小白,求大神指教
#include<stdio.h>
#include<malloc.h>
typedef int datatype;
typedef struct Node
{
datatype data;
struct Node *next;
}LNode;
void ListInitiate(LNode **fakeh)
{
*fakeh=NULL;
}
int ListGet(LNode *fakeh,int i,datatype *x)
{
int j = 0;
LNode *p = fakeh;
if (i<0)
return 0;
else
{
while (p->next!=NULL&&j<i)
{
j++;
p = p->next;
}
}
if (j!=i)
{
printf("插入位置错误");
return 0;
}
*x=p->data;
return 0;
}
int ListInsert(LNode *fakeh,int i,datatype x)
{
LNode *p=fakeh;
LNode *q,*s;
int j=0;
if(i<0)
{
printf("插入位置出错");
return 0;
}
s=(LNode *)malloc(sizeof(LNode));
if(i==0)
{
s->next=p;
fakeh=s;
}
else
{
while(p->next!=NULL&&j<i-1)
{
p=p->next;
j++;
}
if(j!=i-1)
{
printf("插入位置错误");
return 0;
}
else
{
q=p->next;
s->next=q;
p->next=s;
}
}
}
void main()
{
LNode *fakeh;
datatype x;
int i;
ListInitiate(&fakeh);
for(i=0;i<10;i++)
{
ListInsert(fakeh,i,i++);
}
for(i=0;i<10;i++)
{
ListGet(fakeh,i,&x);
printf("%d",x);
}
}
建议写一些打印语句先调试一下内部变量的变化,学会调试也是写程序很重要的技能之一哦,不行再沟通
最好用vs来调试,很快就能看出问题。
你看看79行传入函数里的指针fakeh ,没有初始化,指针没有指向具体的内存地址导致报错了。
void main()
{
LNode fakeh;
datatype x;
int i;
//ListInitiate(&fakeh);
for (i = 0; i < 10; i++)
{
ListInsert(&fakeh, i, i++);
}
for (i = 0; i < 10; i++)
{
ListGet(&fakeh, i, &x);
printf("%d", x);
}
}
你那初始化的函数没啥用,LNode fakeh; 这样才能申请LNode需要的内存
在传参的时候加个&获取实例fakeh的地址就行。
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html