Salve ragazzi sono nuovo in questo forum
ho un problema con un programma che a me sembra corretto anche perche al momento di compilarlo non mi da nessun errore,
però non funziona cioè non stampa i valori della stringa che io vado inserendo ,
quindi ho ci sarà un errore nella funzione stampa o in quella inserisci..
Potete aiutarmi a risolvere questo problema??
grazie in anticipo
PS Giovedi ho l esame
/*Codice*/
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
struct nodo{
int valore;
struct nodo *next;
};
typedef struct nodo *lista;
int manu(void);
void inserisci(lista x, int num);
void cancella(lista x, int num);
int cerca(lista x, int num);
void stampa(lista x);
int main(){
lista l;
//l=NULL;
int scelta=1, num, pos=0;
l=(lista)malloc(sizeof(struct nodo));
l->valore=0;
l->next=NULL;
while(scelta!=0){
scelta=menu();
switch(scelta){
case 0:
exit(0);
case 1:
printf("inserire valore:");
scanf("%d", &num);
inserisci(l, num);
break;
case 2:
printf("quale valore eliminare: ");
scanf("%d", &num);
cancella(l, num);
break;
case 3:
printf("quale valore cercare: ");
scanf("%d", &num);
pos=cerca(l, num);
printf("il valore cercato si trova nella posizione %d\n", pos);
break;
case 4:
printf("a voi la lista\n");
stampa(l);
break;
default:
printf("scelta errata\n");
break;
}
num=0;
}
free(l);
return 0;
}
int menu(void){
int scelta;
printf("\n0.Esci\t1.Inserisci\n2.Cancella\t3.Cerca\n4.Stampa\n");
scanf("%d", &scelta);
return scelta;
}
void inserisci(lista x, int num){
while(x->next!=NULL){
x=x->next;
x->next=(lista)malloc(sizeof(struct nodo));
x->valore=num;
//x->next=NULL;
}
}
void cancella(lista x, int num){
int i=0;
while(x!=NULL && i==0){
if(x->valore==num){
x->valore=0;
i++;
}else{
x=x->next;
i=0;
}
}
}
int cerca(lista x, int num){
int i=0, temp=-1;
while(x!=NULL){
if(x->valore==num){
return i;
}else{
i++;
x=x->next;
}
}
return temp;
}
void stampa(lista x){
while(x->next!=NULL){
printf("%d", x->valore);
x=x->next;
}
printf("%d ", x->valore);
}