用VBA实现堆栈结构
栈是一种常见的基础数据结构,用于实现后进先出的目的。比如桌子上有一堆书,最后一个必须放在最上面,第一个被拿走的也是最上面的。
堆栈中的元素只能从堆栈的顶部进入,这称为堆叠,如下图1所示。堆栈中的元素只能从堆栈顶部删除,这称为弹出,如下图2所示。
图1
图2。
在一些高级编程语言中,如C语言,堆栈结构可以通过使用指针轻松实现。事实上,在VBA实现堆栈很容易。
如下图3所示,变量siTop指向堆栈的顶部。从栈顶开始,每个元素项指向它的下一个元素项,直到栈底。
图3。
这里使用了两个类模块:StackItem类模块和Stack类模块。
StackItem类模块
在StackItem类模块中,只有两个变量,变量Value用来包含每个元素的值,变量NextItem用来指向它的下一个元素项。StackItem类模块中的代码是:
“元素值”
作为变体的公共价值
下一个元素。
公共下一个项目作为堆栈项目
请注意,在StackItem类模块中,变量NextItem被声明为类本身,正是因为这个自引用声明,动态数据结构可以在VBA生成。
堆栈类模块
在Stack类模块中,声明了一个指向栈顶的变量siTop,实现了栈入口操作的Push方法和栈出口操作的Pop方法,以及StackTop和Stack mpty两个只读属性,其中StackTop属性用于返回栈顶元素的值,Stack mpty属性返回栈是否为空。True表示堆栈中没有元素项,而False表示堆栈中有元素项。
堆栈类模块的代码:
栈顶。
作为StackItem的Dim siTop
在堆栈顶部添加新元素。
公共子推送(ByVal varTextAs变体)
作为新堆栈项目变暗
siNewTop。值=varText
设置siNewTop。NextItem=siTop
设置siTop=siNewTop
末端接头
公共函数Pop()作为变量
如果不是StackEmpty,那么
从堆栈顶部获取元素值。
Pop=siTop。价值
然后,设置新的堆栈顶部。
设置siTop=siTop。下一个项目
结束条件
结束功能
栈是空的吗?
属性Get StackEmpty()为布尔值
StackEmpty=(siTop什么都不是)
结束属性
'顶部元素值'
属性获取堆栈操作(AsVariant)
如果斯泰克姆蒂那么
StackTop=空
其他
StackTop=siTop。价值
如果…就会结束
结束属性
广告实操学习深度学习全彩精装版。
作者:张,李。
典当东西
测试堆栈
下面的代码用于测试已实现的堆栈数据结果。将标准模块插入到VBE中,并输入以下代码:
作为新堆栈调暗测试
子测试堆栈()
进入堆栈。
stkTest。推送“Excel”
stkTest。推动“超越完美”
stkTest。推送“Excel”
堆叠和打印元素值。
不测试时执行。判栈空
调试。打印stkTest。Pop()
环
调试。打印“————”
进入堆栈。
StkTest。推动“测试”
调试。打印stkTest。StackTop
末端接头
运行代码的结果如下图4所示。
版权声明:用VBA实现堆栈结构是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

















