链接列表节点CMLNode。
Option Explicit
Public key As Integer
Public pnext As CMLNode
将值添加到列表的功能。
Option Explicit
Dim head As New CMLNode
Public Function Add()
Dim curr As CMLNode
Dim i As Integer
Set curr = head
For i = 1 To 5
Set curr.pnext = New CMLNode
Set curr = curr.pnext
curr.key = i
Next i
Set curr = head
While Not curr.pnext Is curr
Set curr = curr.pnext
Wend
End Function
我试图在VBA中实现链接列表。我的问题是,每当我进入while循环的第6次迭代时(当它应该中断时),我得到一个运行时错误' 91' - 未设置对象变量或块变量。
这个功能显然是多余的,只是我问题的简单演示。
答案 0 :(得分:0)
修正了它!
我一直在从java的角度考虑它,当你指向Null时,你已经到达了列表的末尾。 Microsoft用作演示的代码使最后一个节点指向自身以表示列表的结尾。
Public Function Add(key As Integer)
Dim curr, prev As CMLNode
Dim i As Integer
Set curr = head
For i = 1 To 5
Set curr.pnext = New CMLNode
Set curr = curr.pnext
curr.key = i
Next i
Set curr.pnext = curr 'signify end of list
Set curr = head
While Not curr.pnext Is curr
Set curr = curr.pnext
Wend
End Function