计算机二级VB辅导:循环链表以及相关操作
来源:优易学  2011-12-10 21:05:15   【优易学:中国教育考试门户网】   资料下载   IT书店

  循环链表以及相关操作(VB实现)
  首先建立一个工程,然后增加一个类并且命名为(node,cls),
  在node.cls中加入以下代码.
  Option Explicit
  Public x As Long
  Public count As Long
  Public nextnode As node
  在Form1.frm中加入以下代码。
  Option Explicit
  Dim head As node
  Dim pointer As node
  Dim newnode As node
  Dim n As node
  Dim counts As Long
  Dim temp As node
  Private Sub createlist_Click()
  Dim n As node
  Dim i As Long
  counts = 0
  Set head = New node’可选的。通常在声明时使用 New,以便可以隐式创建对象。如果 New 与 Set 一起使用,则将创建该类的一个新实例。如果 objectvar 包含了一个对象引用,则在赋新值时释放该引用
  head.x = 8
  Set head.nextnode = Nothing
  counts = counts + 1
  head.count = counts
  Set pointer = head
  For i = 1 To 15
  Set newnode = New node
  newnode.x = i
  counts = counts + 1
  newnode.count = counts
  Set newnode.nextnode = Nothing
  Set pointer.nextnode = newnode
  Set pointer = newnode
  Next i
  Set pointer.nextnode = head
  Set pointer = head
  Do
  Print pointer.x
  Set pointer = pointer.nextnode
  If ObjPtr(pointer) = ObjPtr(head) Then ’objptr返回对象的地址
  Exit Sub ’strptr返回变长字符串的字符串数据地址
  End If ’varptr返回变量的地址
  DoEvents’用与获取变量地址,是函数。
  Loop While Not pointer Is Nothing
  End Sub
  Private Sub delete_Click()
  Dim a As Long
  Dim b As Long
  a = CLng(InputBox("输入要删除的一个数据", "输入数据"))
  b = CLng(InputBox("输入该数据的位置", "位置"))
  Set pointer = head
  If b = 1 Then
  Do
  Set pointer = pointer.nextnode
  If ObjPtr(pointer.nextnode) = ObjPtr(head) Then
  Set pointer.nextnode = head.nextnode
  Set head = Nothing
  Set head = pointer.nextnode
  Exit Do
  End If
  DoEvents
  Loop While Not pointer Is Nothing
  counts = 1
  Set pointer = head
  pointer.count = counts
  Do
  counts = counts + 1
  Set pointer = pointer.nextnode
  pointer.count = counts
  If ObjPtr(pointer.nextnode) = ObjPtr(head) Then
  Exit Do
  End If
  DoEvents
  Loop While Not pointer Is Nothing
  Else
  While pointer.count <> b
  Set n = New node
  Set n = pointer
  Set pointer = pointer.nextnode
  DoEvents
  Wend
  Set n.nextnode = pointer.nextnode
  Set pointer = Nothing
  Set pointer = n
  End If
  counts = 0
  Set pointer = head
  counts = counts + 1
  pointer.count = counts
  Do
  counts = counts + 1
  Set pointer = pointer.nextnode
  pointer.count = counts
  If ObjPtr(pointer.nextnode) = ObjPtr(head) Then
  Exit Do
  End If
  DoEvents
  Loop While Not pointer Is Nothing
  End Sub
  Private Sub insert_Click()
  Dim a As Long
  Dim b As Long
  a = CLng(InputBox("输入要插入的一个数据", "输入数据"))
  b = CLng(InputBox("输入该数据的位置", "位置"))
  Set pointer = head
  If b = 1 Then
  head.x = a
  Else
  While pointer.count <> b
  Set pointer = pointer.nextnode
  DoEvents
  Wend
  pointer.x = a
  End If
  End Sub

 

[1] [2] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训