鱼C论坛

 找回密码
 立即注册
查看: 1142|回复: 21

[已解决]为什么能编译但是仍然有报错?

[复制链接]
发表于 2020-10-10 15:04:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码如下,为什么能编译以后但是仍然有报错?
#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; 
}
最佳答案
2020-10-10 16:07:26
抱歉,没看到你已经初始化了
#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; 
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-10-10 15:06:32 | 显示全部楼层

                               
登录/注册后可看大图
报错截图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-10 15:22:06 | 显示全部楼层

我在第 90 行看到,你调用了函数 createLinkList(L,100); 可是我在你程序中,没有看到你对该函数进行定义,另外,你第 2 行加入的头函数 #include <stdbool.h> ,若定义好了  createLinkList(L,100); 问题仍然存在,你就得检查一下 stdbool.h 这个头函数有没有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-10 15:25:12 | 显示全部楼层
乐乐学编程 发表于 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; 
}

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-10 15:34:26 | 显示全部楼层
愷龍 发表于 2020-10-10 15:25
这个函数确实最后有失误,更改以后是这样,然后报错是这样

如果是头函数的问题,那应该怎么修改?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-10 15:34:48 | 显示全部楼层
愷龍 发表于 2020-10-10 15:25
这个函数确实最后有失误,更改以后是这样,然后报错是这样


我还是没有看到你定义 createLinkList() 函数呀。要调用一个函数,若在调用前定义,就无须声明,若在调用的后面定义,还需要先进行声明

比如,你主函数 main() 里调用函数 createHeadLinkList(LinkList *L,int),我在第10行到第23行看到了定义,而createLinkList() 的定义在哪呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-10 15:38:18 | 显示全部楼层
乐乐学编程 发表于 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; 
}
不好意思,漏了一个,但是还是报错跟上个图的报错一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-10 15:41:02 | 显示全部楼层
0.你看看你头插和尾插的函数名,都不一样!
1.85行函数里你想传什么值?写个int;前面参数传L
2.L未初始化头插法函数里怎么传,未定义啊
3.一个链表能头插和尾插一起用?我是没用过
4.链表没有初始化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-10 15:50:08 | 显示全部楼层
巴巴鲁 发表于 2020-10-10 15:41
0.你看看你头插和尾插的函数名,都不一样!
1.85行函数里你想传什么值?写个int;前面参数传L
2.L未初始 ...

0.头插法和尾插法函数名应该一样?
1.85行是想调用这个头插法函数,然后是想设置形参类型
2.从85就是想初始化头插法函数,但是这一块不会整,纰漏很多
3.头插法和尾插法函数我都写了,但是我想在main函数只使用头插函数,这个应该不会有问题吧,还请指正
4.如何初始化链表?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-10 15:55:25 | 显示全部楼层
愷龍 发表于 2020-10-10 15:50
0.头插法和尾插法函数名应该一样?
1.85行是想调用这个头插法函数,然后是想设置形参类型
2.从85就是想 ...

0.你误会了,我说的是定义时的和主函数的不一样
3.我还真没试过
你学的C++还是C?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-10 15:58:40 | 显示全部楼层
巴巴鲁 发表于 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; 
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-10 16:07:26 | 显示全部楼层    本楼为最佳答案   
抱歉,没看到你已经初始化了
#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; 
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-10 16:10:25 | 显示全部楼层
巴巴鲁 发表于 2020-10-10 16:07
抱歉,没看到你已经初始化了

可以运行了,出来了,感谢您的解答!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-10 16:15:14 | 显示全部楼层
愷龍 发表于 2020-10-10 16:10
可以运行了,出来了,感谢您的解答!

其实你大方面没有问题,注意一下函数名
我再试试可不可以头插和尾插一起用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-10 16:17:18 | 显示全部楼层
巴巴鲁 发表于 2020-10-10 16:15
其实你大方面没有问题,注意一下函数名
我再试试可不可以头插和尾插一起用

好的,好的,如果有新的发现我们共享呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-11 11:44:59 | 显示全部楼层
巴巴鲁 发表于 2020-10-10 16:15
其实你大方面没有问题,注意一下函数名
我再试试可不可以头插和尾插一起用

你好,你学Java吗,在安装jdk时候遇到了一些问题,想请教一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-11 12:02:05 | 显示全部楼层
愷龍 发表于 2020-10-11 11:44
你好,你学Java吗,在安装jdk时候遇到了一些问题,想请教一下。

参考:https://blog.csdn.net/weixin_44084189/article/details/98966787
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-11 14:00:32 | 显示全部楼层


我尝试很多次,jdk版本也换了很多次,主要是每次都这样,我找了好多教程,但是都不成功看图

                               
登录/注册后可看大图

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-11 14:04:40 | 显示全部楼层
巴巴鲁 发表于 2020-10-11 12:02
参考:https://blog.csdn.net/weixin_44084189/article/details/98966787

主要是每次我都安装失败(如图)jdk版本我也换了很多,我换了个新电脑就一直安装不成功,之前的电脑直接就能安装成功,教程我也看了很多,希望能得到更多帮助。

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-11 14:07:03 | 显示全部楼层
愷龍 发表于 2020-10-11 14:04
主要是每次我都安装失败(如图)jdk版本我也换了很多,我换了个新电脑就一直安装不成功,之前的电脑直接 ...

之前图片不能加载,请看这个

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 21:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表