νιζ 2022-09-19 15:18 采纳率: 75%
浏览 21
已结题

LNK2005,某函数已在 .obj中定义

问题遇到的现象和发生背景

我在linklist.c 中实现了一些单链表的基础操作,但是在linklist_main.c中定义主方法想调用时却发生了以下错误,

用代码块功能插入代码,请勿粘贴截图

linklist_main.c

#include"linklist.c"

int main()
{
    LinkNode* h=NULL;
    InitList(h);
    ElemType a[5] = { 'a','b','c','d','e' };
    CreatList(h, a, 5);
    DispList(h);
}

linklist.c

#include<stdio.h>
#include<malloc.h>
#include<stdbool.h> 
typedef char ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode* next;
}LinkNode;

void InitList(LinkNode* L)
{
    L = (LinkNode*)malloc(sizeof(LinkNode));
    L ->next = NULL;
}

void CreatList(LinkNode* L, ElemType a[], int n)
{
    LinkNode* s, * r;
    L = (LinkNode*)malloc(sizeof(LinkNode));
    L->next = NULL;
    r = L;
    for (int i = 0; i < n; i++)
    {
        s = (LinkNode*)malloc(sizeof(LinkNode));
        s->data = a[i];
        r->next = s;
        r = s;
    }
    r->next = NULL;
}

void DispList(LinkNode* L)
{
    LinkNode* p = L->next;
    while (p != NULL)
    {
        printf("%d", p->data);
        p = p->next;
    }
    printf("\n");
}
int getListLength(LinkNode* L)
{
    int i = 0;
    LinkNode* p = L;
    while (p->next != NULL)
    {
        i++;
        p = p->next;
    }
    return i;
}


bool ListIsEmpty(LinkNode* L)
{
    return(L->next == NULL);
}

ElemType GetItem(LinkNode* L, int i)
{
    int j = 0;
    LinkNode* p = L;
    while (i<0 || i> getListLength(L))
    {
        printf("输入了错误的数字,请重新输入");
        scanf_s("%d", &i);
    }
    while (j<i&&p != NULL)
    {
        j++;
        p = p->next;
    }
    return p->data;
}

int LocateElem(LinkNode* L, ElemType e)
{
    int i = 1;
    LinkNode* p = L->next;
    while (p != NULL&&p->data != e)
    {
        p = p->next;
        i++;
    }
    if (p == NULL)
        return 0;
    else
        return i;
}

bool ListInsert(LinkNode* L, int i, ElemType e)
{
    int j = 0;
    LinkNode* p = L, * s;
    if (i<= 0)return false;
    while (j<i - 1 && p != NULL)
    {
        j++;
        p = p->next;
    }
    if (p == NULL)
        return false;
    else
        s = (LinkNode*)malloc(sizeof(LinkNode));
    s->data = e;
    s->next = p->next;
    p->next = s;
    return true;
}

bool Listdelete(LinkNode* L, int i, ElemType e)
{
    int j = 0;
    LinkNode* p = L, * q;
    if (i<= 0)return false;
    while (j<i - 1 && p != NULL)
    {
        j++;
        p = p->next;
    }
    if (p == NULL)return false;
    else
    {
        q = p->next;
        if (q == NULL)
            return false;
        e = q->data;
        p->next = q->next;
        free(q);
        return true;
    }
}

运行结果及报错内容

错误 LNK2005 CreatList 已经在 linklist.obj 中定义

img

请问是哪里出错了?

  • 写回答

2条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 系统已结题 9月27日
      • 已采纳回答 9月19日
      • 创建了问题 9月19日

      悬赏问题

      • ¥15 关于用matlab进行光束整形的问题
      • ¥15 vs code编译器 C语言刚学,想的有点复杂
      • ¥15 航班订票系统函数无法运行
      • ¥20 VS2022无法启动程序,如何解决?(语言-c++|开发工具-visual studio)
      • ¥15 c语言可以做出完整的吗有人看看吗
      • ¥15 电脑流氓插件处理方法
      • ¥15 问一下这个可调恒流源电路用哪个电源接口比较好,想用tapec接口仅作为电源接口这个引脚怎么连啊
      • ¥30 Abaqus做建模的时候网格没办法收敛是为什么?
      • ¥15 车牌识别摄像镜头,httppost,nodejs
      • ¥20 腾讯云托管与本地测试 GET请求获取返回值 完全不同