Problema lista in C

di il
2 risposte

Problema lista in C

#include<stdio.h>
#include<stdlib.h>

struct studente{
	char nome[30];
	char cognome[30];
	int matricola;	
    struct studente *next;
};
typedef struct studente studente;
studente* inserisci(studente*head,studente*p){
	studente *r=head;
	studente *q=head;
	while((q!=NULL)&&(q->matricola<p->matricola)){
		r=q;
		q=q->next;
		if(q==head){
			head=p;
		}else{
			r->next=p;
			p->next=q;
			return head;
		}
	}
}
void stampa(studente *head){
	studente *tmp=head;
	while(tmp!=NULL){
		printf("\n%s\n%s\n%d",tmp->nome,tmp->cognome,&tmp->matricola);
		tmp=tmp->next;
	}
}
main(){
	int scelta;
	studente *p;
	studente *head=NULL;
	p=(studente*)malloc(sizeof(studente));
	while(1){
	printf("MENU'\n\n\n");
	printf("1)Inserisci informazioni\n2)Stampa informazioni\n0)Esci dal programma\n");
	scanf("%d", &scelta);
	if(scelta==1){	
	if(p==NULL){
		printf("\nNon ci sono elementi presenti in lista\n");
	}else{
		printf("Nome: ");
		scanf("%s",p->nome);
		printf("\nCognome: ");
		scanf("%s",p->cognome);
		printf("\nMatricola: ");
		scanf("%d",&p->matricola);
		head=inserisci(head,p);
	}
    }
    if(scelta==2){
    	stampa(head);
    	
	}
    if(scelta==0){
    	char esc;
    	esc=getchar();
    	return 0;
	}
}
}

Non mi stampa la lista ma non capisco dove sbaglio :'( un aiutino?

2 Risposte

  • Re: Problema lista in C

    Aiutino:
    il problema non è la funzione di stampa ma di inserimento ... fai un po' di debugging ...

    Altro aiutino:
    anche nella stampa c'è un errore, devi togliere il & dalla printf, ma l'errore più importante è nell'inderimento
  • Re: Problema lista in C

    Ok ci proverò!
Devi accedere o registrarti per scrivere nel forum
2 risposte