Files
DEV/prepa_CM3/ex3_A/stack_operations.c

63 lines
1.5 KiB
C

#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;
}