堆栈在VBA中的实现
2012-11-13 14:22
211 查看
Option Explicit
'定義堆棧的結構
Public Type StackStruct
Size As Integer '當前Stack中元素的個數
Pointer As Integer '指向Stack中棧頂的指針
MaxElementCount As Integer 'Stack中可以放入的元素的個數
Element() As Integer 'Stack中用於放置元素的數組
End Type
'根椐用戶指定的StackSize來創建一個堆棧
Public Function CreateStack(StackSize As Integer) As StackStruct
Dim h As StackStruct
h.Pointer = -1
h.Size = 0
h.MaxElementCount = StackSize
ReDim h.Element(StackSize - 1) As Integer
CreateStack = h
End Function
'判定堆棧是否為空
Public Function StackEmpty(h As StackStruct) As Boolean
StackEmpty = (h.Pointer = -1)
End Function
'判定堆棧是否己滿
Public Function StackFull(h As StackStruct) As Boolean
StackFull = (h.Size = h.MaxElementCount)
End Function
'將元素Ikey壓入堆棧
Public Function Push(ByRef h As StackStruct, Ikey As Integer) As Boolean
'若堆棧己滿,則返回False
If StackFull(h) Then Push = False: Exit Function
h.Pointer = h.Pointer + 1
h.Element(h.Pointer) = Ikey
h.Size = h.Size + 1
End Function
'將元素彈出堆棧
'若己棧,則返回False
Public Function Pop(ByRef h As StackStruct) As Variant
If StackEmpty(h) Then
Pop = False
Else
Pop = h.Element(h.Pointer)
h.Pointer = h.Pointer - 1
h.Size = h.Size - 1
End If
End Function
'定義堆棧的結構
Public Type StackStruct
Size As Integer '當前Stack中元素的個數
Pointer As Integer '指向Stack中棧頂的指針
MaxElementCount As Integer 'Stack中可以放入的元素的個數
Element() As Integer 'Stack中用於放置元素的數組
End Type
'根椐用戶指定的StackSize來創建一個堆棧
Public Function CreateStack(StackSize As Integer) As StackStruct
Dim h As StackStruct
h.Pointer = -1
h.Size = 0
h.MaxElementCount = StackSize
ReDim h.Element(StackSize - 1) As Integer
CreateStack = h
End Function
'判定堆棧是否為空
Public Function StackEmpty(h As StackStruct) As Boolean
StackEmpty = (h.Pointer = -1)
End Function
'判定堆棧是否己滿
Public Function StackFull(h As StackStruct) As Boolean
StackFull = (h.Size = h.MaxElementCount)
End Function
'將元素Ikey壓入堆棧
Public Function Push(ByRef h As StackStruct, Ikey As Integer) As Boolean
'若堆棧己滿,則返回False
If StackFull(h) Then Push = False: Exit Function
h.Pointer = h.Pointer + 1
h.Element(h.Pointer) = Ikey
h.Size = h.Size + 1
End Function
'將元素彈出堆棧
'若己棧,則返回False
Public Function Pop(ByRef h As StackStruct) As Variant
If StackEmpty(h) Then
Pop = False
Else
Pop = h.Element(h.Pointer)
h.Pointer = h.Pointer - 1
h.Size = h.Size - 1
End If
End Function
相关文章推荐
- 堆栈的链表实现
- [原创]VBA实现汇总excel,将多个Excel文件内容复制到一个Excel文件中
- 图的深度优先遍历[非堆栈、堆栈实现]
- 堆栈和队列的实现
- 使用链表定义堆栈,实现pop,push
- 堆栈的数组实现
- VC++2012编程演练数据结构《3》堆栈实现进制转换
- 使用堆栈来实现括号匹配的检查
- C语言堆栈实现( 动态数组 )
- 经典抽象数据类型之堆栈实现(动态数组)
- 详解堆栈的几种实现方法——C语言版
- 两个堆栈实现一个队列
- 自定义堆栈,实现括号匹配
- SPFA的堆栈实现
- 堆栈的C语言实现
- 用两个堆栈实现一个列表的功能(主要是入队列和出队列)
- excel通过vba实现智能提示功能小结
- 堆栈数据结构的实现~
- 堆栈计算机的原理和实现
- 使用堆栈思路 实现逆波兰表达式