C编程中部分函数没有作用

我将顺序表的函数和主函数写在一个文件下面,但是运行起来似乎顺序表的函数没起作用,不知道为什么。

img

代码贴完整啊,你这些函数怎么实现的,下面main也没有。

【以下回答由 GPT 生成】

你的代码存在一个问题,就是没有对顺序表进行初始化操作。在主函数中,你声明了一个指向Sqlist类型的指针变量L,但是并没有给它分配内存空间,也没有初始化它。这样,在调用顺序表的函数时会出现问题。

为了解决问题,我们需要在主函数中进行顺序表的初始化操作。具体步骤如下:

  1. 在主函数开始前,添加一个初始化顺序表的函数InitList,函数原型如下:
void InitList(Sqlist*& L) {
    L = (Sqlist*)malloc(sizeof(Sqlist));  // 为L分配内存空间
    L->length = 0;  // 初始化顺序表的长度为0
}
  1. 在主函数中调用InitList函数进行顺序表的初始化。将以下代码添加到主函数开头:
InitList(L);

这样,你的代码就会正确地初始化顺序表L了。同时,还可以考虑添加其他错误处理和释放内存的操作。完整的代码如下:

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

#define MaxSize 50

typedef char ElemType;

typedef struct {
    ElemType data[MaxSize];
    int length;
} Sqlist;

void CreateList(Sqlist*& L, ElemType a[], int n);
void InitList(Sqlist*& L);
void DestroyList(Sqlist*& L);
bool ListEmpty(Sqlist* L);
int ListLength(Sqlist* L);
void DisplayList(Sqlist* L);
bool GetElem(Sqlist* L, int i, ElemType& e);
int LocateElem(Sqlist* L, ElemType e);
bool ListInsert(Sqlist*& L, int i, ElemType e);
bool ListDelete(Sqlist*& L, int i, ElemType& e);

int main() {
    Sqlist* L;
    ElemType e;

    printf("顺序表的基本运算如下:\n");

    InitList(L);  // 初始化顺序表

    printf("(1) 初始化顺序表 L:\n");

    // ...

    return 0;
}

void InitList(Sqlist*& L) {
    L = (Sqlist*)malloc(sizeof(Sqlist));  // 为L分配内存空间
    L->length = 0;  // 初始化顺序表的长度为0
}

// 其他函数的实现省略

希望以上解决方案可以帮助到你,如果还有其他问题,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^