C链表初始化

时间:2016-01-12 01:48:32

标签: c linked-list

当我根本不知道问题是什么时,我不知道如何提出问题,因为我还是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;
}

我想知道的是为什么它打印&#34;倾听视频&#34;什么时候应该打印列表中的val

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您不需要使用“initialiserListe”函数初始化L,因为您已经在main函数中初始化它,并且您的代码将被编辑为如下所示:

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