63 lines
1.5 KiB
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;
|
||
|
|
}
|