#include <stdio.h>
#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;
}