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

struct maillon {
	unsigned short valeur;
	struct maillon* suiv;
};

typedef struct maillon maillon;


maillon* ajouteDebut(maillon *chaine, unsigned short entier){
	maillon *nouveauMaillon=malloc(sizeof(maillon));
	nouveauMaillon->valeur=entier;
	nouveauMaillon->suiv=chaine;
	return nouveauMaillon;
	free(nouveauMaillon);
}

void afficheListe(maillon *chaine){
	maillon *affichage=malloc(sizeof(maillon));
	affichage=chaine;
	while(affichage->suiv!=NULL){
		printf("%hu ",affichage->valeur);
		affichage=affichage->suiv;
	} free(affichage);
}

int maximum(maillon *chaine){
	maillon *chercheMax=malloc(sizeof(maillon));
	int max=0;
	chercheMax=chaine;
	while(chercheMax->suiv!=NULL){
		if (max<chercheMax->valeur){
			max=chercheMax->valeur;
		}
		chercheMax=chercheMax->suiv;
	} free(chercheMax);
	return max;
}

int main() {
	int i;
	int maxi;
	maillon *liste=malloc(sizeof(maillon));
	srand(time(NULL));

	putchar('\n');
	liste->valeur=(rand()%889)+111;
	liste->suiv=NULL;
	for(i=0;i<10;i++){
		unsigned short v=(rand()%889)+111;
		liste=ajouteDebut(liste, v);
	} printf("Les valeurs de la liste sont :\n");
	afficheListe(liste);
	putchar('\n');
	maxi=maximum(liste);
	printf("\nLa valeur maximum de la liste est : %hu\n\n",maxi);
return 0;
}