列表不退出循环吗?

根纳罗·马可·德文森兹(Gennaro Marco Devincenzis)

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

#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 lista\n");
        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 costituita\n");
    scanf("%d",&k);
    readListIntRic(&lista,k);
    stampaLista(lista);
}

该程序的行为异常:

-即使列表中没有零,它也会在末尾打印0;

-我printf("//");只看程序是否退出了循环。事实证明,事实并非如此。

这给了我很多问题。我也一直尝试做其他练习,但是它们都存在相同的问题,我不知道这是什么。我正在使用带有wxDev-C +的GCC编译器

埃里克本

您没有ListaDiElementi lista = NULL;在中初始化main()这就是while (lista != NULL)循环永远不会结束的原因

阅读C语言中的Initialize变量以了解有关此内容的更多信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章