初始化之后为什么L.next不是NULL呢

初始化之后为什么L.next不是NULL呢,主函数里YES打印不出?哪位帮忙看看,谢谢!


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

#define ElemTyoe int

typedef struct DuLNode {
    ElemTyoe data;
    struct DuLNode* prior;
    struct DuLNode* next;
}DNode;

void InitList(DNode* L); //初始化

int main()
{
    DNode L; 
    InitList(&L);
    if (L.next == NULL) printf("YES");

    return 0;
}

void InitList(DNode* L)
{
    L = (DNode*)malloc(sizeof(DNode));
    L->next = NULL;
    L->prior = NULL;
    printf("初始化双向链表成功\n");
}

void InitList(DNode* L);
这个不能作用到主程序
应该写

void InitList(DNode** L1)
{
    *L1 = (DNode*)malloc(sizeof(DNode));
    DNode** L = *L1;
    L->next = NULL;
    L->prior = NULL;
    printf("初始化双向链表成功\n");
}

int main()
{
    DNode *L; 
    InitList(&L);
    if (L->next == NULL) printf("YES");
 
    return 0;
}


其实主要原因是因为你在函数内部又申请了一段空间,而里面申请是里面的改变的也是里面结构体的成员,而外面的结构体并没有改变,其实在里面就不用申请空间了直接进行next,prior改变即可

【以下回答由 GPT 生成】

问题:

我在C语言中使用双向链表,但是在初始化之后,为什么L.next不是NULL呢?在主函数中,我尝试打印YES,但是没有输出。请问有谁可以帮我看看问题在哪里呢?谢谢!

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

#define ElemType int

typedef struct DuLNode {
    ElemType data;
    struct DuLNode* prior;
    struct DuLNode* next;
}DNode;

void InitList(DNode** L); // 初始化

int main()
{
    DNode* L; 
    InitList(&L);
    if (L->next == NULL) printf("YES");

    return 0;
}

void InitList(DNode** L)
{
    *L = (DNode*)malloc(sizeof(DNode));
    (*L)->next = NULL;
    (*L)->prior = NULL;
    printf("初始化双向链表成功\n");
}

优化后的问题:

我在C语言中使用双向链表,但是在初始化之后,为什么L.next不是NULL呢?在主函数中,我尝试打印YES,但是没有输出。我希望找到问题所在并进行优化。

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

#define ElemType int

typedef struct DuLNode {
    ElemType data;
    struct DuLNode* prior;
    struct DuLNode* next;
}DNode;

void InitList(DNode** L); // 初始化双向链表

int main()
{
    DNode* L; 
    InitList(&L);
    if (L->next == NULL) printf("YES");

    return 0;
}

void InitList(DNode** L)
{
    *L = (DNode*)malloc(sizeof(DNode));
    (*L)->next = NULL;
    (*L)->prior = NULL;
    printf("成功初始化双向链表\n");
}

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