[VB]使用堆栈实现后进先出的数据调用

ZDNet软件频道 时间:2004-07-06 作者:Builder.com |  我要评论(0)
本文关键词:vb
采用后进先出(LIFO)模式的堆栈对很多程序都非常有用。本文中我会讲述如何使用VB实现一个后进先出的堆栈。
本文译自Builder.com,未经许可请勿转载

采用后进先出(LIFO)模式的堆栈对很多程序都非常有用。本文中我会讲述如何使用vb实现一个后进先出的堆栈。

一般来说,堆栈有两种操作:Push用来将数据压入堆栈,而Pop用来从堆栈中提取数据。Push永远把数据放入堆栈的最顶端,而Pop永远读取堆栈顶端的数据。假设你按照以下顺序执行Push操作:

1.        Push A

2.        Push B

3.        Push C

如果你之后又执行了三次Pop动作,那么首先获取的数据应该是C,第二次Pop获取的是B,最后获取的才是A。需要注意的是,堆栈在空的时候需要发出某种指示。

vb中实现堆栈最好采用Class模块的方式。基本上,堆栈是一个存放数据的数组,其中有一个指针用来标示堆栈最“顶端”的数据。在一个Stack类中,我们使用动态数组以便可以随时将新的数据Push进堆栈。当数据从堆栈中提取出来时,数组不会改变大小以避免重复呼叫ReDim函数带来的开销。

Stack类的vb代码如下所示:

Private data() As Variant
Private pointer As Long

Private Sub Class_Initialize()
  
pointer = 0
ReDim data(1)

End Sub

Public Function Pop()

If pointer > 0 Then
  Pop = data(pointer)
  pointer = pointer - 1
Else
  Pop = Null
End If

End Function

Public Sub Push(value)


pointer = pointer + 1
If UBound(data) < pointer Then
  ReDim Preserve data(pointer)
End If
data(pointer) = value

End Sub


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134