Une pile avec un tableau static c'est faisable facilement
En dynamique autant utiliser une liste (avec les pointeurs), c'est plus simple :)
exemple de pile LIFO (Last In First Out)
#include <stdio.h>
#include <stdlib.h>
typedef struct stack
{
int data[100];
int size;
} s_stack;
void init(s_stack* stack)
{
stack->size = 0;
}
void push(s_stack* stack, int elem)
{
if (stack->size < 100)
stack->data[stack->size++] = elem;
else
printf("la stack est pleine\n");
}
int pop(s_stack* stack)
{
if (stack->size > 0)
return stack->data[--stack->size];
else
{
printf("la stack est déjà vide...\n");
return -1;
}
}
int main()
{
s_stack* stack = malloc(sizeof (s_stack));
init(stack);
printf("push : 5\n");
push(stack, 5);
printf("push : 10\n");
push(stack, 10);
printf("push : 15\n");
push(stack, 15);
printf("taille de la stack : %d\n", stack->size);
printf("pop : %d\n", pop(stack));
printf("pop : %d\n", pop(stack));
printf("pop : %d\n", pop(stack));
printf("taille de la stack : %d\n", stack->size);
printf("pop : %d\n", pop(stack));
free(stack);
return 0;
}
bon la c'est un peu fait à l'arrache mais ça compile et ça marche ^^ tu peux facilement ajouter des trucs. J'ai quand même mis une structure et des pointeurs car c'est le bien :]
Les tableaux sont un peu moins adapter pour les files (un peu plus couteux car a chaque pop() tu dois décaler toutes les cases de ton tableau)
J'espère t'avoir aidé :]