C链表初始化



当我根本不知道问题出在哪里时,我不知道如何表述问题,因为我对C中的链表还很陌生,无论如何,这是我的代码

#include <stdio.h>
#include <stdlib.h>
typedef struct Element{
    int val;
    struct Element* suivant;
}Element;
Element* initialiserListe(Element* L){
    L = NULL;
    return L;
}
Element* nouveau;
Element* insererEnTete(Element* L){
    nouveau = (Element*)malloc(sizeof(Element));
    if(L == NULL) printf("initialisation : ");
    printf("donner une valeur : ");
    scanf("%d", &nouveau->val);
    nouveau->suivant = L;
    return nouveau;
}
int listeVide(Element* L){
    return L == NULL;
}
void affichageListe(Element* L){
    if(listeVide(L)) printf("liste vide");
    else{
        Element* temp = L;
        while(temp != NULL){
            printf("%d", temp->val);
            temp = temp->suivant;
        }
    }
}
int main()
{
    printf("Hello world!n");
    Element *L = NULL;
    initialiserListe(L);
    insererEnTete(L);
    affichageListe(L);
    return 0;
}

我想知道的是,当它应该打印列表中的vals时,为什么要打印"liste vide"

您需要将函数调用的返回值分配给主函数中的L

...
int main()
{
    printf("Hello world!n");
    Element *L = NULL;
    L = initialiserListe(L);
    L = insererEnTete(L);
    L = affichageListe(L);
    return 0;
}

您不需要使用"initializerListe"函数初始化L,因为您已经在主函数中初始化了它,您的代码将被编辑为这样:

int main()
{
  printf("Hello world!n");
    Element *L = NULL;
    L = insererEnTete(L);
     affichageListe(L);
    return 0;
}

相关内容

  • 没有找到相关文章

最新更新