创建链表的时候,怎么也解决不了warning C4013和error C2371,希望大佬指教

网上查找说的是函数没有放在main 函数之前,但是我都没有创建main函数,并且就算在函数最后添加main函数,错误也还是这样的。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define H "-----------------------"


typedef struct Person
{
    char name[20];
    char addr[20];
    char tele[20];
    char qq[20];
    struct Person *next;
}PERSON;

PERSON *head;

void lcreate()
{
    PERSON *pb;
    char ch;

    do
    {
        pb = malloc(sizeof(PERSON));
        if (!pb)
        {
            printf("cannot have house!");
            getchar();
            exit(1);
        }
        printf("%s\nPlease put in name:", H);
        gets_s(pb->name,20);
        printf("%s\nPlease put in address:",H);
        gets_s(pb->addr,20);
        printf("%s\nPlease put in phone:",H);
        gets_s(pb->tele,20);
        printf("%s\nPlease put in QQ:",H);
        gets_s(pb->qq,20);

        linsert(pb);
        printf("yes or no put in next informantion!(y/n)");
        ch = getchar();
        fflush(stdin);
    } while (ch == 'y' || ch == 'Y');
}

void DeleteList(PERSON *head)
{
    PERSON *DElem, *next;
    DElem = head;
    while (DElem)
    {
        next = DElem->next;
        free(DElem);
        DElem = next;
    }
}

void linsert(PERSON *p)
{
    PERSON *pa, *pb;
    pb = head;
    if (!head)
    {
        head = p;
    }
    else
    {
        while (pb)
        {
            pa = pb;
            pb = pb->next;
        }
        pa->next = p;
    }
    p->next = NULL;
}

void ldel(char *name)
{
    PERSON *pa, *pb;
    if (!head)
    {
        printf("linst is null!\n");
        getchar();
        exit(1);
    }
    pb = head;
    while (strcmp(pb->name, name) && pb->next)
    {
        pa = pb;
        pb = pb->next;
    }
    if (!strcmp(pb->name, name))
    {
        if (pb = head)
        {
            head = pb->next;
        }
        else
        {
            pa->next = pb->next;
        }
        free(pb);
    }
}

1>------ 已启动生成: 项目: Project7, 配置: Debug Win32 ------
1>源.c
1>d:\c++暂存文件\project7\project7\源.c(41): warning C4013: “linsert”未定义;假设外部返回 int
1>d:\c++暂存文件\project7\project7\源.c(60): error C2371: “linsert”: 重定义;不同的基类型
1>已完成生成项目“Project7.vcxproj”的操作 - 失败。
===== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ======

2个回答

不是要放在main前面,而是要先申明后调用

insert(pb);
你这里调用了
void linsert(PERSON *p)
这里才定义,所以要在
void lcreate()
前面加上一行
void linsert(PERSON *p); //别忘记最后的分号。

qimujun
one people 谢谢
2 个月之前 回复

三个问题(此处我仅仅解决你的编译问题,逻辑我没看)
1 linsert未定义,需把linsert前置,即放在你调用linsert函数之前声明,或者直接把实现放在前面
2 解决linsert之后,你的程序中有很多指针未初始化,未分配空间。需要分配空间,提醒(指针慎用)。
图片说明
3 最后就是你的.c文件必须要有main,你直接右键编译这个文件是没有问题,能编译成功,但因为main是入口,你是无法生成解决方案的。
图片说明

qimujun
one people 谢谢
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

1
c语言链表问题,希望能在10号之前得到解答
0
链表二叉树建树怎么建树
1
c#如何创建链表的结构体(struct)
2
静态链表为什么实现不了数据反转,哪里错了,具体的代码如何实现?
1
链表程序vc6.0可以运行但vs不能运行
1
写了链表插入函数 主函数却没实现插入功能
1
关于数据结构中的单链表的输出问题。
1
Java语言的数组,如何增加和缩小长度,要实现动态的改变不想用链表了
1
学习C语言版数据结构(严蔚敏版)时,按位获取单链表的值失败,怎么解决。
2
Java语言编写程序一个链表,并且计算链表上所有数的和
1
重赏求助,用java eclipse,分别用二叉链表、三叉链表为成员方法,查找二叉树中某节点的父节点?
1
我弄的C++类链表可以创建但是输出不了,程序没有报错,但只能调用setnum函数但是不能调用display函数,如图,请问是哪里出了问题?
1
c语言链表问题,请问一下我这个代码错在哪里,谢谢了
1
用链表和静态栈判断回文的问题
0
C语言 如何调用链表里的数据?
2
我写的链表,每次到末尾插入的时候就会报错 调试的时候出现segmentation fault 请大佬看看时怎么回事
1
用C++实现将一串数字输入一个链表再将这个链表中的奇偶数分开存储在两个链表中,最后输出
1
c语言构建单向链表,vs正常运行但是gcc会报错runtime error:segmentation fault。
1
请问大神们为什么我这个代码运行后在该输出链表的时候一直无限输出0?
1
如何用C++创建一个可以存入小数的链表?