Dernier entré, premier sorti (Pile) Algorithme/Classe pour Excel VBA
Je suis à la recherche pour mettre en œuvre une "Pile" de la Classe en VBA pour Excel. Je veux utiliser un Last In First Out structure. Quelqu'un est venu à travers ce problème avant ? Connaissez-vous les bibliothèques externes de la manipulation de la structure, comme la Pile, Hastable, Vecteur... (à part l'original Excel de la Collection, etc...)
Grâce
OriginalL'auteur BlackLabrador | 2011-02-02
Vous devez vous connecter pour publier un commentaire.
Ici est très simple pile de classe.
Tester
Bruce
OriginalL'auteur bruce
Je ne sais pas du tout externe VBA bibliothèques de ces structures.
Pour ma procédure-de la pile des appels je viens d'utiliser un tableau global et le pointeur sur le tableau avec les méthodes Push et Pop.
OriginalL'auteur Charles Williams
Bruce McKinney code fourni par une Pile, une Liste, un Vecteur et dans ce livre (il était VB5(!), mais qui n'a probablement pas beaucoup d'importance):
http://www.amazon.com/Hardcore-Visual-Basic-Bruce-McKinney/dp/1572314222
(Il est épuisé, mais utilisé des copies sont bon marché.)
Le code source semble être disponibles ici:
http://vb.mvps.org/hardweb/mckinney2a.htm#2
(Mise en garde - je n'ai jamais utilisé l'un de son code, mais je sais qu'il est très appréciée, long-temps VB expert, et son livre a été inclus sur MSDN pour un long moment.)
Je suis sûr qu'il ya aussi beaucoup de différentes implémentations de ces choses-là, flottant autour de l'internet, mais je ne sais pas si certains d'entre eux sont largement utilisés par n'importe qui, mais leurs auteurs.
Bien sûr, aucun de ces trucs est-ce dur à écrire votre propre code, étant donné que VBA prend en charge redimensionnables tableaux (plus de la façon dont un vecteur) et fournit une Collection intégrée de la classe (la plupart de la voie à une liste). Charles William réponse à une pile est d'environ toutes les informations dont vous avez besoin. Il suffit de fournir votre propre wrapper autour de soit un tableau ou d'une Collection, mais le code à l'intérieur peut être relativement trivial.
Pour une table de hachage, le MS Scripting Runtime comprend un Dictionnaire de classe qui, fondamentalement, est un. Voir:
Table de hachage/Tableau Associatif en VBA
merci beaucoup, aura un coup d'oeil à elle
OriginalL'auteur jtolle
Vous pouvez utiliser la classe Pile dans le Système.Collections, que vous pouvez utiliser File d'attente et les autres. Il suffit de chercher pour vb.net pile pour la documentation. Je n'ai pas essayé toutes les méthodes (par exemple, Getenumerator - je ne sais pas comment utiliser un itérateur, si possible en VBA). À l'aide d'une pile ou d'une file d'attente vous donne quelques belles prestations, normalement, pas si facile en VBA. Vous pouvez utiliser
MÊME si la pile est vide (Retourne un tableau de taille 0 à -1).
À l'aide d'une des Collections personnalisées de l'Objet, il fonctionne très rapide en raison de sa simplicité et peut facilement être réécrite (par exemple pour gérer uniquement fortement typé varibles). Vous voudrez peut-être faire un chèque de pile vide. Si vous essayez d'utiliser la Pop sur une pile vide, VBA ne la manipulez pas avec élégance, comme tous les null-objets. Je l'ai trouvé plus raisonnable de les utiliser:
de la fonction à l'aide de la pile, au lieu de la cuisson dans clsStack.Pop. Si vous faites cuire dans la classe, un appel à la Pop peut renvoyer une valeur de type choisi - bien sûr, vous pouvez l'utiliser pour gérer des valeurs vides, mais vous obtenez beaucoup plus de chagrin de cette façon.
Un exemple d'utilisation:
En utilisant un PRINCIPE de la pile peut être extrêmement utile!
Classe clsStack
OriginalL'auteur Espen Rosenquist