Gestion pile file (lifo fifo) par recordset ou collection

Description

Une classe qui permets de gérer une Pile ou une File du genre :
LIFO : Last Input -> First Output
FIFO : First Input -> First Output
Ce qui permets de gérer des fonctions pseudo récursive ou à faire bien d’autre chose ;-)

Source / Exemple :


Option Explicit
' Romuald   Alias Icem@n
' © 2001
' Version 1.2.1    11/03/2002

'
' dans le code :
'   definition :
'      dim pile as clsFIFOLIFO_Col
'   instanciation :
'      set pile = new clsFIFOLIFO_Col
Dim colPile As Collection

Private Sub Class_Initialize()
    ' Instanciation de l'objet
    Set colPile = New Collection
End Sub

Private Sub Class_Terminate()
    ' Supprime l'objet
    Set colPile = Nothing
End Sub

Public Function PileIsEmpty() As Boolean
    PileIsEmpty = Not CBool(colPile.Count)
End Function

Public Sub Empile(strValue As String)
    ' Ajoute un element au sommet de la pile (ou de la file)
    colPile.Add strValue
End Sub

Public Sub Enfile(strValue As String)
    ' Ajoute un element au bas de la pile (ou de la file)
    colPile.Add strValue, , , colPile.Count
End Sub ' dans le cas d'une pile : FIFO (First Input First Output)

Public Function Depile() As String
    Depile = vbNull
    ' si la pile n'est pas vide
    If colPile.Count <> 0 Then
        ' prend le dernier élément empilé
        Depile = colPile.Item(1)
        ' et le supprime de la pile
        colPile.Remove 1
    End If
End Function

' dans le cas d'une file : LIFO (Last Input First Output)
Public Function Defile() As String
    Defile = vbNull
    ' si la file n'est pas vide
    If colPile.Count <> 0 Then
        ' prend le premier élément empilé (enfilé)
        Defile = colPile.Item(colPile.Count)
        ' et le supprime de la pile
        colPile.Remove colPile.Count
    End If
End Function

Codes Sources

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.