打印本文 打印本文 关闭窗口 关闭窗口
循环链表以及相关操作(VB实现)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1422  更新时间:2009/4/23 16:38:02  文章录入:mintao  责任编辑:mintao

                              循环链表以及相关操作(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

Private Sub insert2_Click()
  Dim a As Long
  Dim b As Long
  a = CLng(InputBox("输入要删除的一个数据", "输入数据"))
  b = CLng(InputBox("输入该数据的位置", "位置"))
  Set pointer = head
  If b = 1 Then
   Set n = New node
   n.x = a
   Set n.nextnode = Nothing
   Do
    Set pointer = pointer.nextnode
    If ObjPtr(pointer.nextnode) = ObjPtr(head) Then
         Set pointer.nextnode = n
         Set n.nextnode = head
         Set head = n
         Exit Do
    End If
    Loop While Not pointer Is Nothing
    Set pointer = head
    counts = 1
    pointer.count = 1
    Do
     counts = counts + 1
     Set pointer = pointer.nextnode
     pointer.count = counts
     If ObjPtr(pointer.nextnode) = ObjPtr(head) Then
             Exit Do
     End If
     Loop While Not pointer Is Nothing
   Else
   Set n = New node
       n.x = a
     Set n.nextnode = Nothing
    While pointer.count <> b
       Set temp = New node
       Set temp = pointer
       Set pointer = pointer.nextnode
       DoEvents
     Wend
     Set n.nextnode = pointer
     Set temp.nextnode = n
     Set pointer = n
     Set pointer = head
     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
     Loop While Not pointer Is Nothing
   End If
End Sub

Private Sub konglianbiao_Click()
Set pointer = head
Do
    Set pointer = pointer.nextnode
    If ObjPtr(pointer.nextnode) = ObjPtr(head) Then
               Set pointer.nextnode = Nothing
               Set n = New node
               Set n = pointer
    End If
   DoEvents
Loop While Not pointer.nextnode Is Nothing
 Do
   Set pointer = head
   Set head = head.nextnode
  Set pointer = Nothing
    If ObjPtr(head) = ObjPtr(n) Then
           Set head = Nothing
     &nb

[1] [2]  下一页

打印本文 打印本文 关闭窗口 关闭窗口