当我根本不知道问题出在哪里时,我不知道如何表述问题,因为我对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;
}