手机版

用VBA实现堆栈结构

时间:2021-09-22 来源:互联网 编辑:宝哥软件园 浏览:

栈是一种常见的基础数据结构,用于实现后进先出的目的。比如桌子上有一堆书,最后一个必须放在最上面,第一个被拿走的也是最上面的。

堆栈中的元素只能从堆栈的顶部进入,这称为堆叠,如下图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或者邮箱删除。