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

struct NUM{int num; struct NUM *punt_num;};

typedef struct NUM numero;
typedef numero *lista;

void inizializza(lista*);
void inserisci(lista*,int);
void visualizza(lista*);
void visualizza_pari(lista*);
void max(lista*);

void main() {
	int opzione,num;
	lista ls;
	
	while(opzione!=9999)
	{
opzione=0;
	printf("Digita\n");
	printf("-1 per inizializzare\n");		
	printf("-2 per inserire un numero in testa alla lista\n");	
	printf("-3 per visualizzare tutti gli elementi della lista\n");
	printf("-4 per mostrare gli elementi della lista in posizione pari\n");
	printf("-5 per mostrare il valore max presente nella lista\n\n");
	scanf("%d",&opzione);
			if(opzione==1){
				inizializza(&ls);
			}
			if(opzione==2){
				num=0;
				printf("Inserisci il numero da inserire in testa alla lista\n");
				while(num!=99999){
					scanf("%d",&num);
					inserisci(&ls,num);}

					printf("\nLa lista aggiornata contiene questi numeri:\n");
				visualizza(&ls);
			}
			if(opzione==3){
				printf("La lista contiene questi numeri:\n");
				visualizza(&ls);
			}
			if(opzione==4){
				printf("La lista contiene in posizione pari questi numeri:\n");
				visualizza_pari(&ls);
			}
			if(opzione==5){
				printf("Il numero max presente nella lista e':\n");
				max(&ls);
			}
	}

}


void inizializza(lista *lst){
	if(*lst==NULL){
		printf("La lista e' stata gia' inizializzata\n\n");
	}
	else {
	*lst=NULL;
	printf("La lista e' stata inizializzata correttamente\n\n");}
}

void inserisci(lista *lst,int n){

	lista ls;
	ls=(numero *)malloc(sizeof(numero));
	ls->num=n;
	ls->punt_num=*lst;
	*lst=ls;
}

void visualizza(lista *lst){
	lista ls;
	ls=*lst;
	while(ls!=NULL){
	printf("%d\n",ls->num);
	ls=ls->punt_num;
	}
}

void visualizza_pari(lista *lst){
	int cont=0;
	lista ls;
	ls=*lst;
	while(ls!=NULL){
	cont++;
	if(cont%2==0){
	printf("%d\n",ls->num);
	ls=ls->punt_num;
	}
	else
	ls=ls->punt_num;
	}
}

void max(lista *lst){
	int max,temp;
	lista ls;
	ls=*lst;
		max=ls->num;
		temp=ls->num;
		
		while(ls!=NULL){
			if(temp>max){
				max=temp;
				temp=ls->num;
				ls=ls->punt_num;
			}
		}
printf("\n%d",max);


}

ho questo codice..
ma la funzione per il max nn funziona..
in cosa sbaglio?
premetto che sono un principiante..