我基本上才刚刚开始研究列表,并且在第一次练习中遇到了问题。这是一个打印列表元素的程序。
#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] 删除。
我来说两句