Aiutooo programma C liste

di il
4 risposte

Aiutooo programma C liste

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);
    }

4 Risposte

Devi accedere o registrarti per scrivere nel forum
4 risposte