A Simple Stack Class

This class module functions as a simple stack that can be dropped straight into any project requiring a stack object.

The class contains an internal collection of objects (variants) - you can simply change the data types passed in through the Push method and returned from the Pop method to use any data type you like.

screen-shot

The Push / Pop functionality comes from using the internal Collections Add method with the underused 'Before' parameter set as 1.

Simply paste the code into a class module with a relevant name, eg. cStack and you can use it straight away in your projects :


option Explicit
'
' cStack.cls
'
' This class implements a simple stack structure -
' at the moment it only uses a variant item in the
' collection, but of course you can use any
' variable / object type you like!


'
' Our Internal Collection
'
private mStackCollection as Collection

private Sub Class_Initialize()
'
' Create the internal collection
'
    set mStackCollection = new Collection
End Sub

private Sub Class_Terminate()
'
' Kill off the internal collection
'
    set mStackCollection = nothing
End Sub

public Sub Push(byval vData as Variant)
'
' Push an item onto the stack
'

'
' If there's stuff already on the stack, then
' insert the new item before the first item
'
    If mStackCollection.Count > 0 then
        mStackCollection.Add vData, , 1
    else
'
' Otherwise, just add it to the stack as the first item
'
        mStackCollection.Add vData
    End If
End Sub

public Function Pop() as Variant
'
' 'Pop' an item off the stack
'
    If mStackCollection.Count > 0 then
        If IsObject(mStackCollection.Item(1)) then
            set Pop = mStackCollection.Item(1)
        else
            Pop = mStackCollection.Item(1)
        End If
'
' Don't forget to remove the item from the stack
' once it's been popped !
'
        mStackCollection.Remove 1
    else
        Err.Raise vbObjectError + 4999, "cStack::Pop", _
                  "Stack is empty"
    End If
    
End Function

public property get StackCount() as Long
'
' Number of items in stack
'
    StackCount = mStackCollection.Count
End property
'
'

Download Zipped Project File containing class and sample(5k)



Comments

  • STACK CLASS GIVES AN ERROR !!!

    Posted by Legacy on 05/09/2001 12:00am

    Originally posted by: Siddharth.S.Pawar


    Hello,
    I downloaded your stack class and found some error in it.If the stack is totally empty and still u perform the pop operation,it gives an Run-Time error.I have fixed that error at my place,if u want the code,please contact me...

    Anyway,
    THANKS FOR YOUR STACK CLASS......????

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • IBM Worklight is a mobile application development platform that lets you extend your business to mobile devices. It is designed to provide an open, comprehensive platform to build, run and manage HTML5, hybrid and native mobile apps.

  • Agile methodologies give development and test teams the ability to build software at a faster rate than ever before. Combining DevOps with hybrid cloud architectures give teams not just the principles, but also the technology necessary to achieve their goals. By combining hybrid cloud and DevOps: IT departments maintain control, visibility, and security Dev/test teams remain agile and collaborative Organizational barriers are broken down Innovation and automation can thrive Download this white paper to …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds