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

struct maillon_s {
	char valeur;
	struct maillon_s* suivant;
};

typedef struct maillon_s pile;


void push(pile* p, char c) {
	pile* s = p;
	s = (pile*) malloc(sizeof(pile));
	p->valeur = c;
	p->suivant = s;
}

int empty(pile* p) {
	return (p == NULL);
}


char pop(pile* p) {
	if (!empty) {
		pile* s = p;
		free(p);
		return s->valeur;
	}
}


void affiche_pile(pile* p) {
	pile* s;
	for (s = p; s->suivant != NULL; s = s->suivant) {
		printf("| %c |\n", s->valeur);
	}
	printf("-----\n");
}

int main(void) {
	pile* p;
	push(p, 'A');
	affiche_pile(p);
	push(p, 'B');
	affiche_pile(p);
	push(p, 'C');
	affiche_pile(p);
	return EXIT_SUCCESS;
}