为什么能编译但是仍然有报错?
代码如下,为什么能编译以后但是仍然有报错?#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
typedef int DataType;
typedef struct Node
{
DataType data;
struct Node * next;
}LinkList;
LinkList *creataHeadList(LinkList*L,int num)//头插法建立单链表
{ LinkList *s;
int i=1;
while(i<num)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=i;
s->next=L->next;
L->next=s;
++i;
}
L->data=num;
return L;
}
LinkList *createTailList(LinkList *L,int num)//尾插法建立单链表
{
LinkList *s,*r;
int i=0;
L=r=NULL;
while(i<num)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=i;
s->next=NULL;
r->next=s;
++i;
}
L->data=num;
return L;
}
LinkList *addElement(LinkList *L,DataType e,int i)//单链表增
{
LinkList *s;
int count=0;
if(i<0||i>L->data)
return false;
while(count<i)
{
L=L->next;
++count;
}
s=(LinkList*)malloc(sizeof(LinkList));
s->data=e;
s->next=L->next;
L->next=s;
++L->data;
return L;
}
DeleteElement(LinkList *L,int i)//单链表删
{
LinkList *p;
int count=0;
if(i<0||i>L->data)
return 0;
while(count<i)
{
p=L;
L=L->next;
++count;
}
p->next=L->next;
free(L);
--L->data;
return true;
}
LinkList *FindElement(LinkList *L,DataType e)
{
while(L!=NULL)
if(L->data==e)
{
return L;
}
L=L->next;
}
int main()
{
LinkList createHeadLinkList(LinkList *L,int);
LinkList *L=(LinkList*)malloc(sizeof(LinkList));
L->next=NULL;
createLinkList(L,100);
printf("&d",L->next->data);
return 0;
} https://pic.downk.cc/item/5f815d661cd1bbb86bea04d2.png报错截图 愷龍 发表于 2020-10-10 15:06
报错截图
我在第 90 行看到,你调用了函数 createLinkList(L,100); 可是我在你程序中,没有看到你对该函数进行定义,另外,你第 2 行加入的头函数 #include <stdbool.h> ,若定义好了createLinkList(L,100); 问题仍然存在,你就得检查一下 stdbool.h 这个头函数有没有问题
乐乐学编程 发表于 2020-10-10 15:22
我在第 90 行看到,你调用了函数 createLinkList(L,100); 可是我在你程序中,没有看到你对该函数进行定义 ...
这个函数确实最后有失误,更改以后是这样,然后报错是这样#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
typedef int DataType;
typedef struct Node
{
DataType data;
struct Node * next;
}LinkList;
LinkList *creataHeadList(LinkList*L,int num)//头插法建立单链表
{ LinkList *s;
int i=1;
while(i<num)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=i;
s->next=L->next;
L->next=s;
++i;
}
L->data=num;
return L;
}
LinkList *createTailList(LinkList *L,int num)//尾插法建立单链表
{
LinkList *s,*r;
int i=0;
L=r=NULL;
while(i<num)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=i;
s->next=NULL;
r->next=s;
++i;
}
L->data=num;
return L;
}
LinkList *addElement(LinkList *L,DataType e,int i)//单链表增
{
LinkList *s;
int count=0;
if(i<0||i>L->data)
return false;
while(count<i)
{
L=L->next;
++count;
}
s=(LinkList*)malloc(sizeof(LinkList));
s->data=e;
s->next=L->next;
L->next=s;
++L->data;
return L;
}
DeleteElement(LinkList *L,int i)//单链表删
{
LinkList *p;
int count=0;
if(i<0||i>L->data)
return 0;
while(count<i)
{
p=L;
L=L->next;
++count;
}
p->next=L->next;
free(L);
--L->data;
return true;
}
LinkList *FindElement(LinkList *L,DataType e)
{
LinkList *p=L->next;
while(p && p->data!=e)
p=p->next;
return p;
}
int main()
{
LinkList createHeadLinkList(LinkList *L,int);
LinkList *L=(LinkList*)malloc(sizeof(LinkList));
L->next=NULL;
createLinkList(L,100);
printf("&d",L->next->data);
return 0;
}
https://pic.downk.cc/item/5f8161cd1cd1bbb86beed14b.png 愷龍 发表于 2020-10-10 15:25
这个函数确实最后有失误,更改以后是这样,然后报错是这样
如果是头函数的问题,那应该怎么修改? 愷龍 发表于 2020-10-10 15:25
这个函数确实最后有失误,更改以后是这样,然后报错是这样
我还是没有看到你定义 createLinkList() 函数呀。要调用一个函数,若在调用前定义,就无须声明,若在调用的后面定义,还需要先进行声明
比如,你主函数 main() 里调用函数 createHeadLinkList(LinkList *L,int),我在第10行到第23行看到了定义,而createLinkList() 的定义在哪呢? 乐乐学编程 发表于 2020-10-10 15:34
我还是没有看到你定义 createLinkList() 函数呀。要调用一个函数,若在调用前定义,就无须声明,若在调 ...
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
typedef int DataType;
typedef struct Node
{
DataType data;
struct Node * next;
}LinkList;
LinkList *creataHeadList(LinkList*L,int num)//头插法建立单链表
{ LinkList *s;
int i=1;
while(i<num)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=i;
s->next=L->next;
L->next=s;
++i;
}
L->data=num;
return L;
}
LinkList *createTailList(LinkList *L,int num)//尾插法建立单链表
{
LinkList *s,*r;
int i=0;
L=r=NULL;
while(i<num)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=i;
s->next=NULL;
r->next=s;
++i;
}
L->data=num;
return L;
}
LinkList *addElement(LinkList *L,DataType e,int i)//单链表增
{
LinkList *s;
int count=0;
if(i<0||i>L->data)
return false;
while(count<i)
{
L=L->next;
++count;
}
s=(LinkList*)malloc(sizeof(LinkList));
s->data=e;
s->next=L->next;
L->next=s;
++L->data;
return L;
}
DeleteElement(LinkList *L,int i)//单链表删
{
LinkList *p;
int count=0;
if(i<0||i>L->data)
return 0;
while(count<i)
{
p=L;
L=L->next;
++count;
}
p->next=L->next;
free(L);
--L->data;
return true;
}
LinkList *FindElement(LinkList *L,DataType e)
{
LinkList *p=L->next;
while(p && p->data!=e)
p=p->next;
return p;
}
int main()
{
LinkList createHeadLinkList(LinkList *L,int);
LinkList *L=(LinkList*)malloc(sizeof(LinkList));
L->next=NULL;
createHeadLinkList(L,100);
printf("&d",L->next->data);
return 0;
}不好意思,漏了一个,但是还是报错跟上个图的报错一样 0.你看看你头插和尾插的函数名,都不一样!
1.85行函数里你想传什么值?写个int;前面参数传L
2.L未初始化头插法函数里怎么传,未定义啊
3.一个链表能头插和尾插一起用?我是没用过
4.链表没有初始化 巴巴鲁 发表于 2020-10-10 15:41
0.你看看你头插和尾插的函数名,都不一样!
1.85行函数里你想传什么值?写个int;前面参数传L
2.L未初始 ...
0.头插法和尾插法函数名应该一样?
1.85行是想调用这个头插法函数,然后是想设置形参类型
2.从85就是想初始化头插法函数,但是这一块不会整,纰漏很多
3.头插法和尾插法函数我都写了,但是我想在main函数只使用头插函数,这个应该不会有问题吧,还请指正
4.如何初始化链表? 愷龍 发表于 2020-10-10 15:50
0.头插法和尾插法函数名应该一样?
1.85行是想调用这个头插法函数,然后是想设置形参类型
2.从85就是想 ...
0.你误会了,我说的是定义时的和主函数的不一样
3.我还真没试过
你学的C++还是C? 巴巴鲁 发表于 2020-10-10 15:55
0.你误会了,我说的是定义时的和主函数的不一样
3.我还真没试过
你学的C++还是C?
函数不一样这问题更改了,代码如下。然后就抛开头插和尾插这个同时用不说,如果只用这个头插函数来达到存入一串数据和在main中调用并输出这串数据的话,这个代码应该怎么编写。
我学的是C语言,然后现在正在学习链表,还请赐教,谢谢!#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
typedef int DataType;
typedef struct Node
{
DataType data;
struct Node * next;
}LinkList;
LinkList *creataHeadList(LinkList*L,int num)//头插法建立单链表
{ LinkList *s;
int i=1;
while(i<num)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=i;
s->next=L->next;
L->next=s;
++i;
}
L->data=num;
return L;
}
LinkList *createTailList(LinkList *L,int num)//尾插法建立单链表
{
LinkList *s,*r;
int i=0;
L=r=NULL;
while(i<num)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=i;
s->next=NULL;
r->next=s;
++i;
}
L->data=num;
return L;
}
LinkList *addElement(LinkList *L,DataType e,int i)//单链表增
{
LinkList *s;
int count=0;
if(i<0||i>L->data)
printf("不能插入数据");
while(count<i)
{
L=L->next;
++count;
}
s=(LinkList*)malloc(sizeof(LinkList));
s->data=e;
s->next=L->next;
L->next=s;
++L->data;
return L;
}
DeleteElement(LinkList *L,int i)//单链表删
{
LinkList *p;
int count=0;
if(i<0||i>L->data)
return 0;
while(count<i)
{
p=L;
L=L->next;
++count;
}
p->next=L->next;
free(L);
--L->data;
return true;
}
LinkList *FindElement(LinkList *L,DataType e)
{
LinkList *p=L->next;
while(p && p->data!=e)
p=p->next;
return p;
}
int main()
{
LinkList createHeadLinkList(LinkList *L,int);
LinkList *L=(LinkList*)malloc(sizeof(LinkList));
L->next=NULL;
createHeadLinkList(L,100);
printf("&d",L->next->data);
return 0;
} 抱歉,没看到你已经初始化了
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
typedef int DataType;
typedef struct Node
{
DataType data;
struct Node * next;
}LinkList;
LinkList *createHeadList(LinkList*L,int num)//头插法建立单链表
{ LinkList *s;
int i=1;
while(i<num)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=i;
s->next=L->next;
L->next=s;
++i;
}
L->data=num;
return L;
}
/*
LinkList *createTailList(LinkList *L,int num)//尾插法建立单链表
{
LinkList *s,*r;
int i=0;
L=r=NULL;
while(i<num)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=i;
s->next=NULL;
r->next=s;
++i;
}
L->data=num;
return L;
}
*/
LinkList *addElement(LinkList *L,DataType e,int i)//单链表增
{
LinkList *s;
int count=0;
if(i<0||i>L->data)
printf("不能插入数据");
while(count<i)
{
L=L->next;
++count;
}
s=(LinkList*)malloc(sizeof(LinkList));
s->data=e;
s->next=L->next;
L->next=s;
++L->data;
return L;
}
DeleteElement(LinkList *L,int i)//单链表删
{
LinkList *p;
int count=0;
if(i<0||i>L->data)
return 0;
while(count<i)
{
p=L;
L=L->next;
++count;
}
p->next=L->next;
free(L);
--L->data;
return true;
}
LinkList *FindElement(LinkList *L,DataType e)
{
LinkList *p=L->next;
while(p && p->data!=e)
p=p->next;
return p;
}
int main()
{
//LinkList createHeadLinkList(LinkList *L,int);
LinkList *L=(LinkList*)malloc(sizeof(LinkList));
L->next=NULL;
createHeadList(L,100);
printf("%d",L->next->data); // 应该是%d啊
return 0;
} 巴巴鲁 发表于 2020-10-10 16:07
抱歉,没看到你已经初始化了
可以运行了,出来了,感谢您的解答! 愷龍 发表于 2020-10-10 16:10
可以运行了,出来了,感谢您的解答!
其实你大方面没有问题,注意一下函数名{:10_304:}
我再试试可不可以头插和尾插一起用 巴巴鲁 发表于 2020-10-10 16:15
其实你大方面没有问题,注意一下函数名
我再试试可不可以头插和尾插一起用
好的,好的,如果有新的发现我们共享呀 巴巴鲁 发表于 2020-10-10 16:15
其实你大方面没有问题,注意一下函数名
我再试试可不可以头插和尾插一起用
你好,你学Java吗,在安装jdk时候遇到了一些问题,想请教一下。 愷龍 发表于 2020-10-11 11:44
你好,你学Java吗,在安装jdk时候遇到了一些问题,想请教一下。
参考:https://blog.csdn.net/weixin_44084189/article/details/98966787 巴巴鲁 发表于 2020-10-11 12:02
参考:https://blog.csdn.net/weixin_44084189/article/details/98966787
我尝试很多次,jdk版本也换了很多次,主要是每次都这样,我找了好多教程,但是都不成功看图https://pic.downk.cc/item/5f829f641cd1bbb86b30c4da.jpg
巴巴鲁 发表于 2020-10-11 12:02
参考:https://blog.csdn.net/weixin_44084189/article/details/98966787
主要是每次我都安装失败(如图)jdk版本我也换了很多,我换了个新电脑就一直安装不成功,之前的电脑直接就能安装成功,教程我也看了很多,希望能得到更多帮助。
https://pic.downk.cc/item/5f829f641cd1bbb86b30c4da.jpg 愷龍 发表于 2020-10-11 14:04
主要是每次我都安装失败(如图)jdk版本我也换了很多,我换了个新电脑就一直安装不成功,之前的电脑直接 ...
之前图片不能加载,请看这个https://i1.100024.xyz/i/2020/10/11/n9bv0o.jpg
页:
[1]
2