我基本上刚刚开始学习列表,我在第一个练习中遇到了问题。这是一个打印列表元素的程序。
#include <stdio.h>
#include <stdlib.h>
struct EL {
int info;
struct EL *next;
};
typedef struct EL ElementoLista;
typedef ElementoLista *ListaDiElementi;
void InserisciTestaLista(ListaDiElementi *lista, int elem){
ListaDiElementi aux;
aux=malloc(sizeof(ElementoLista));
aux->info=elem;
aux->next=*lista;
*lista=aux;
};
void readListIntRic (ListaDiElementi *L, int K ) {
int x;
if (K>0){
printf("Digita un intero elemento della listan");
scanf("%d",&x);
InserisciTestaLista(L,x);
readListIntRic(L,K-1);
}
};
void stampaLista (ListaDiElementi lista){
while (lista != NULL){
printf("%d->",lista->info);
lista=lista->next;
}
printf("//");
};
int main(){
ListaDiElementi lista;
int k;
printf("Inserisci il numero di elementi di cui vuoi che la lista sia costituitan");
scanf("%d",&k);
readListIntRic(&lista,k);
stampaLista(lista);
}
程序行为异常:
-在最后打印0,即使列表中没有0;
-I放入printf("//");
只是为了查看程序是否退出循环。事实证明,它没有。
这给了我很多问题。我也一直在尝试做其他的练习,但它们都有同样的问题,我不知道是什么。我使用GCC编译器wxDev-C+
您没有初始化main()
中的ListaDiElementi lista = NULL;
。这就是为什么while (lista != NULL)
循环永远不会结束。
阅读C中初始化变量来了解更多。