To read the article online, visit http://www.4GuysFromRolla.com/webtech/041900-1.2.shtml

Building a Stack Class Using VBScript, Part 2


  • Read Part 1

  • In Part 1 we looked at what a stack data structure is, exactly, and what semantics and methods it needs to include. Also, we looked at creating a WeakList class using the DynamicArray class presented in an earlier article (Dynamic Arrays). In this part, we will look at the code for our stack class.

    Recall that a stack needs to implement the following functions: pop and push. To make our stack class even more useful, we'll also add a Count property and a peek method. (The peek method will return the value at the top of the stack without altering the stack in any way.) Our stack class will contain a single member variable, an instance of the WeakList class. The event handlers of the class simple instantiate the WeakList class and clean up afterwards.

    <!--#include file="WeakList.Class.asp"-->
    <%
    Class Stack
      '********* MEMBER VARIABLES **********
      Private wlList
      '*************************************
    
      '********* EVENT HANDLERS ************
      Private Sub Class_Initialize()
        'Allocate the weak list instance
        Set wlList = New WeakList
      End Sub
    
      Private Sub Class_Terminate()
        Set wlList = Nothing       'Clean up!
      End Sub
      '*************************************
    
      '... methods and properties omitted for brevity ...
    End Class
    %>
    

    Note that the WeakList class definition, which was stored in a file named WeakList.Class.asp was imported via a server-side include.

    The member variable wlList serves as an instance of the WeakList class. All of the methods and properties of the stack class will use this single member variable. By doing so, the code for the stack class is short and easy to the point of lunacy.

    Following is the methods and properties for the stack class:

    <!--#include file="WeakList.Class.asp"-->
    <%
    Class Stack
      '... The member variable and event handler sections
           have been omitted for brevity ...
           
      '************ PROPERTIES *************
      Public Property Get Count()
        Count = wlList.Count
      End Property
      '*************************************
    
      '************* METHODS ***************
      Public Function Push(varItem)
        wlList.AddHead(varItem)
      End Function
    
      Public Function Pop()
        Pop = wlList.RemoveHead()
      End Function
    
      Public Function Peek()
         Peek = wlList.PeekHead()
      End Function
      '*************************************
    End Class
    

    Pretty easy, eh? All of our methods and properties are only one line long! Neat-o. This class definition should be placed in its own file, Stack.Class.asp, for example. How about an example of using the stack class? You can also view an on-line demo of the code displayed below.

    <% Option Explicit %>
    <!--#include file="Stack.Class.asp"-->
    <%
      Dim objStack
      Set objStack = new Stack
    
      'Push some data on the stack
      objStack.Push("This ")
      objStack.Push("is ")
      objStack.Push("a ")
      objStack.Push("test! ")
    
      'What is on the top?
      Response.Write objStack.Peek() & " is on the top of the stack.<P>"
    
      'Remove all the data displaying it
      Response.Write "<B>Outputting the stack contents:</B><BR>"
      While objStack.Count > 0
        Response.Write objStack.Pop() & "<BR>"
      Wend
    
      set objStack = nothing
    %>
    

    Well, that wraps it up! Hopefully you found this stack class and/or WeakList useful. Feel free to use these classes in your ASP projects.

    Happy Programming!

  • Read Part 1


    Attachments:

  • Download the source to WeakList.Class.asp in text format
  • Download the source to Stack.Class.asp in text format
  • Try out the on-line Stack class demo!


  • Article Information
    Article Title: Building a Stack Class Using VBScript, Part 2
    Article Author: Scott Mitchell
    Published Date: Wednesday, April 19, 2000
    Article URL: http://www.4GuysFromRolla.com/webtech/041900-1.2.shtml


    Copyright 2017 QuinStreet Inc. All Rights Reserved.
    Legal Notices, Licensing, Permissions, Privacy Policy.
    Advertise | Newsletters | E-mail Offers