A Simple Stack Class
A Simple Stack Class
Author: Chris Eastwood
Author's WebSite: http://www.eastwood60.freeserve.co.ukThis 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.
![]()
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)
Posted On: 7-Jan-2000
This article was originally published on January 7, 2000