Implémentation d'une pile d'entier

Contenu du snippet

Il s'agit d'une pile d'entier à allocation dynamique. J'ai réalisé ceci pour des opérations sur des graphes (Algorithmie). Ce sera utile pour certains et inutile pour d'autres...

Source / Exemple :


#include <stdio.h>

int *pile;
int pos = 0; //position dans la pile

// Initialisation de la pile
int InitPile(size_t taille)
{
    pile = (int *)malloc(taille);

  • pile = taille;
if(pile != NULL){ pos = 1; return 0; } return 1; } // Fonction d'empilage des entiers void Empiler(int entier) {
  • (pile+pos) = entier;
pos++; } // Fonction de dépilage des valeurs int Depiler() { pos--; return *(pile+pos); } // Fonction d'affichage d'une valeur précise int Select(int x) { if((x >= 0) && (x <= *pile)) return *(pile+x); return -1; } // Fonction de vidage de la pile void ViderPile() { int taille = *pile; memset(pile, 0, taille); pos = 1; return; } int main() { int value; size_t taille; printf("Taille de la pile :\n"); scanf("%d", &taille); InitPile(taille); printf("Empiler :\n"); scanf("%d", &value); Empiler(value); printf("Depiler : %d\n", Depiler()); printf("Afficher une valeur :\n"); scanf("%d", &value); printf("%d\n", Select(value)); printf("Vider la pile :\n"); ViderPile(); //system("pause"); return 0; }

Conclusion :


Si l'allocation de la pile échoue, la fonction InitPile() renvoit 1 (gestion des erreurs).
L'utilisation de la pile est illustrée dans la fonction main().
Remarque : le premier élément de la pile (position 0) contient sa taille.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.