#include #include "stack.h" /* Retire de la pile tous les éléments valant 0 */ void removeZeros(stack s) { stack tempStack = create_stack(); /* Transférer les éléments non nuls vers une pile temporaire*/ while (!empty(s)) { long value = pop(s); if (value != 0) { push(tempStack, value); } } /* Transférer les éléments depuis la pile temporaire vers la pile d'origine*/ while (!empty(tempStack)) { push(s, pop(tempStack)); } /* Libérer la mémoire de la pile temporaire*/ destroy_stack(tempStack); } int main() { stack myStack = create_stack(); /* Ajouter des éléments à la pile (exemple)*/ push(myStack, 0); push(myStack, 5); push(myStack, 0); push(myStack, 8); push(myStack, 0); push(myStack, 3); /* Afficher la pile avant la suppression des zéros*/ printf("Pile avant suppression des zéros : "); while (!empty(myStack)) { printf("%ld ", pop(myStack)); } printf("\n"); /* Remettre des éléments à la pile (exemple)*/ push(myStack, 0); push(myStack, 9); push(myStack, 0); push(myStack, 7); /* Appliquer la fonction pour retirer les zéros*/ removeZeros(myStack); /* Afficher la pile après la suppression des zéros*/ printf("Pile après suppression des zéros : "); while (!empty(myStack)) { printf("%ld ", pop(myStack)); } printf("\n"); /* Libérer la mémoire de la pile*/ destroy_stack(myStack); return 0; }