13个小石头 2023-03-19 16:24 采纳率: 33.3%
浏览 62
已结题

关于#链表#的问题,如何解决?

本人是大一新生,写单链表时遇见一点问题,求帮忙解决一下(用的是C语言)
这是我制定的库文件。

#include <stdio.h>
#include <stdlib.h>

#define true 1
#define false 0

typedef int ElemType;

typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LinkNode;

LinkNode *CreateListF(LinkNode *L, ElemType a[], int n);
void InitList(LinkNode *L);
void DestroyList(LinkNode *L);
int ListEmpty(LinkNode *L);
int ListLength(LinkNode *L);
void DispList(LinkNode *L);
int GetElem(LinkNode *L,int i,ElemType e);
int LocateList(LinkNode *L, ElemType e);
int ListInsert(LinkNode *L, int i, ElemType e);
int ListDelete(LinkNode *L, int i, ElemType e);

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

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

void DestroyList(LinkNode *L)
{
    LinkNode *pre=L, *p=L->next;
    while(p != NULL)
    {
        free(pre);
        pre = p;
        p = pre->next;
    }
    free(pre);
}

int ListEmpty(LinkNode *L)
{
    if(L->next == NULL)
    {
        return true;
    }
}

int ListLength(LinkNode *L)
{
    LinkNode *s=L;
    int i;
    while(s->next!=NULL)
    {
        s = s->next;
        i++;
    }
    return i;
}

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

int GetElem(LinkNode *L,int i,ElemType e)
{
    LinkNode *s=L;
    int j=0;
    while(jnext!=NULL)
    {
        s = s->next;
        j++;
    }
    if(s=NULL)
    {
        return false;
    }
    else
    {
        e = s->data;
        return true;
    }
}

int LocateList(LinkNode *L, ElemType e)
{
    LinkNode *s=L;
    int i=1;
    while(s->next!=NULL || s->data!=e)
    {
        s = s->next;
        i++;
    }
    if(s=NULL)
    {
        return false;
    }
    else
    {
        return true;
    }
}

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

下面是我的主题函数

#include "LinkNode.h"

int main()
{
    LinkNode *LA, *LB, *LC;
    int la[7]={1,3,4,14,5,6,17},lb[10]={1,5,8,7,9,11,2,3,4,0},i,j;
    CreateList(&LA,la[7],7);
    DiapList(LA);
    DestroyList(LA);
    CreateList(&LB,lb[10],10);
    DispList(LB);
    DestroyList(LB);
    return 0;
}

编译的错误如下

img

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2023-03-19 17:08
    关注

    错误的意思是找不到这两个函数的定义
    你文件开头定义的函数名是CreateListF和DispList,但main里写的却是CreateList和DiapList(第8行,但11行又不是了),太粗心了

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效