迷途的启木菌 2019-11-13 20:06 采纳率: 50%
浏览 426
已采纳

创建链表的时候,怎么也解决不了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条回答

  • threenewbee 2019-11-13 22:44
    关注

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?