#include #include struct maillon { int valeur; struct maillon * suivant; }; typedef struct maillon * VersMaillon ; VersMaillon construire(void); void ecrire(VersMaillon); VersMaillon renverser(VersMaillon); void main() { VersMaillon debut; debut=construire(); printf("Voici la liste de vos entiers dans l'ordre de la liste chaînée construite : \n"); ecrire(debut); debut=renverser(debut); printf("Voici la liste de vos entiers dans l'ordre de la liste chaînée renversée : \n"); ecrire(debut); } VersMaillon construire() { VersMaillon deb, p; int donnee; deb=NULL; printf("Donnez vos données, tapez -1 pour terminer : \n"); scanf("%d",&donnee); while (donnee!=-1) { p=(VersMaillon) malloc(sizeof(struct maillon)); p->valeur=donnee; p->suivant=deb; deb=p; scanf("%d",&donnee); } return deb; } VersMaillon renverser(VersMaillon deb) { VersMaillon p, q ,r; if ((deb==NULL)||(deb->suivant==NULL)) return deb; q=deb->suivant; deb->suivant=NULL; r=q->suivant; q->suivant=deb; while (r!=NULL) { p=q; q=r; r=r->suivant; q->suivant=p; } deb=q; return deb; } void ecrire(VersMaillon deb) { VersMaillon p; p=deb; while (p!=NULL) { printf("%d ",p->valeur); p=p->suivant; } printf("\n"); }