[Structure de données] Implémentation détaillée de la pile (langage c)

Table des matières

1. Le concept de base de la pile

2. La structure de base de la pile

modifier

3. Mise en place de la pile


1. Le concept de base de la pile

Pile : une liste linéaire spéciale qui permet uniquement l'insertion et la suppression d'éléments à une extrémité fixe . L'extrémité où les opérations d'insertion et de suppression de données sont effectuées
est appelée le haut de la pile, et l'autre extrémité est appelée le bas de la pile. Les éléments de données dans la pile suivent le principe de LIFO (Last In First Out) .
Push (push) : L'opération d'insertion de la pile s'appelle push/push/push, et les données entrantes se trouvent en haut de la pile.
Popper la pile (popping the stack) : L'opération de suppression de la pile est appelée popping the stack. Les données de sortie sont également en haut de la pile

2. La structure de base de la pile

 Lors de l'insertion d'un morceau de données, si l'insertion est réussie, alors les données sont maintenant l'élément supérieur de la pile

Le premier élément à pousser sur la pile est l'élément inférieur de la pile.

Le premier élément poussé dans la pile est pressé en bas de la pile.Lorsqu'un élément doit être retiré, bien sûr, seuls les éléments situés au-dessus du bas de la pile peuvent être retirés avant l'élément en bas de la pile. peut être retiré.

3. Mise en place de la pile

L'implémentation de la pile est divisée en deux manières, 1. Implémentation de tableau 2. Implémentation de liste chaînée

Les deux implémentations ont des avantages et des inconvénients, mais relativement parlant, je pense que l'implémentation de tableaux est meilleure.L'utilisation d'une liste chaînée nécessite de l'espace à appliquer à chaque fois qu'elle est poussée dans la pile et de l'espace doit être libéré lorsqu'elle est sortie de la pile, tandis que le tableau n'a besoin d'être rempli que lorsque la capacité est pleine. Lors de l'expansion, le plus important est que la structure physique du tableau soit continue. Lors du calcul du cache, le taux de réussite est plus élevé et l'efficacité de lecture est plus haut.

L'implémentation de la liste chaînée est divisée en deux méthodes, l'une consiste à insérer à la fin de la pile et à supprimer à la fin de la pile. La seconde est lorsque la tête est insérée dans la pile et la tête est supprimée lorsque la pile est retirée.

Relativement parlant, la deuxième méthode est meilleure, car l'insertion et la suppression de la queue doivent trouver la queue à chaque fois, et la complexité temporelle est O(n) , tandis que la suppression et l'insertion de la tête n'ont pas besoin de trouver la queue, et le temps la complexité est O(1 )

ok, je ne m'étendrai pas sur l'implémentation de la pile par la liste chaînée. Le contenu principal de l'exposé d'aujourd'hui est d' implémenter la pile avec un tableau

Le tableau implémente la pile. Lorsqu'il est poussé dans la pile , c'est comme l'insertion de queue lorsque nous avons implémenté la table de séquence avant , et lorsqu'il est sorti , cela équivaut à la suppression de la queue de la table de séquence . , leur complexité en temps est O(1)

Dans la figure ci-dessous, nous pouvons voir que l'élément en bas de la pile est toujours le premier élément à entrer. Lorsqu'un élément est poussé dans la pile, le haut de la pile devient la position de l'élément. est sorti de la pile, la pile Le sommet est l'élément précédent de cet élément

En résumé, l'élément supérieur de la pile est en fait le dernier élément du tableau

 L'implémentation de pile par tableau se fait presque en mots, maintenant commençons à l'implémenter avec du code

1. Fonctions d'interface associées

2. Définir une structure

 3. Initialisation

Initialiser top==0, à ce moment top indique le nombre d'éléments dans la pile et indique également la position suivante de l'élément supérieur dans la pile, c'est-à-dire que [ top-1] indique l'élément supérieur dans la pile

 4. Poussez dans la pile

Lors de la poussée dans la pile, il est nécessaire de juger si la pile est pleine et d'augmenter la capacité lorsqu'elle est pleine

 5. Déterminez si la pile est vide

Lorsque top vaut zéro, la pile est vide

 6. Sortez

Pour obtenir l'élément supérieur de la pile dans la figure ci-dessous, vous devez affirmer pour empêcher l'accès à la position de données [-1] lorsque la pile est vide (accès illégal)

 

 Déclarez que sortir de la pile est utilisé en conjonction avec l'obtention de l'élément supérieur de la pile , comme illustré dans la figure suivante :

 À ce stade, l'élément supérieur de la pile est obtenu puis sorti de la pile

7. Obtenir le nombre d'éléments dans la pile

 

 8. Destruction de la pile

Ceci est la fin du partage des connaissances sur la pile. Si vous le trouvez utile, veuillez l'aimer. Merci pour votre soutien.

Y a-t-il une marge d'amélioration, j'espère que tout le monde pourra le signaler

886!

Je suppose que tu aimes

Origine blog.csdn.net/m0_72532428/article/details/129748918
conseillé
Classement