c语言 - 列表不退出循环?



我基本上刚刚开始学习列表,我在第一个练习中遇到了问题。这是一个打印列表元素的程序。

#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中初始化变量来了解更多。

相关内容

  • 没有找到相关文章

最新更新