< Previous lesson | Table of Content | Content of this Chapter | Next lesson >
Stack Data Structure
Stack is a dynamic set where the elements are added to the top of the set (Push) and deleted from the top of the set (Pop). You stack your variable on top of the others and get the last inputted variable. You use Stack data structure when you want to represent LIFO (Last-In First-Out) queuing. Example of this kind of queue is when you put things into a room with single door.
Creating Stack Library
Stack library consist of 2 methods:
Push
and
Pop
,
and 2 properties:
IsEmpty
and
Count
.
1. Open a new standard Exe project
2. Right click in the project windows and Add Class Module
3. Change the name of the class module into Stack
4. Copy and paste the code below
Option Explicit
Private lngTop As Long
Private myStack() As Variant' to manage increase of array
Private k As Integer
Private Const MAXARRAY = 5
Property Get Count() As Long
Count = lngTop
End Property
Property Get IsEmpty() As Boolean
If lngTop = 0 Then IsEmpty = True Else IsEmpty = False
End Property
Function Push(ByRef myStack, ByVal value)
lngTop = lngTop + 1
If lngTop > k * MAXARRAY Then
k = k + 1
ReDim Preserve myStack(0 To k * MAXARRAY)
End If
myStack(lngTop) = value
End FunctionFunction Pop(ByRef myStack)
If IsEmpty() Then
MsgBox "Stack underflow"
Else
lngTop = lngTop - 1
Pop = myStack(lngTop + 1)
End If
End Function
Using Stack Library
-
Continue the project by typing the following code into the form
declaration section:
Option Explicit
Dim s As New Stack
Dim myStack()
-
Then in the MouseDown event procedure copy and paste the following
procedure:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, y As Single)
Dim q
q = Array(X, y)
If Button = vbLeftButton Then
Call s.Push(myStack, q)
Else
q = s.Pop(myStack)
End If
End Sub -
Save the project and debug the program to see how it works. Check
the value of q and MyStack
< Previous lesson | Table of Content | Content of this Chapter | Next lesson >