首 页文章中心下载中心繁體中文
设为首页
加入收藏
联系我们
您当前的位置:开源盛世-源代码下载网 -> 文章中心 -> V B 专区 -> 文章内容 退出登录 用户管理
投票调查
栏目导航
· VC++专区 · V B 专区
· GIS 专区 · PDA 专区
· 其他编程 · 网站开发类
· 数据库类 · 软件应用
· 网络安全 · 论文专区
· 综合资讯
热门文章
· Tab Control控件使用...
· 学生档案管理系统
· [图文] 排列组合公式
· UTF-8与GB2312之间的...
· DirectShow下载安装...
· Virtual PC 在PAE模...
· Windows2000终端服务...
· MapInfo上的GIS系统...
· kalman filter 卡尔...
· Windows2000终端服务...
相关文章
· 浏览文件夹中的图片...
循环链表以及相关操作(VB实现)
作者:佚名  来源:vscodes.com整理  发布时间:2005-12-16 13:47:34  发布人:Polaris

减小字体 增大字体

                              循环链表以及相关操作(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
           Set n = Nothing
    End If
    DoEvents
Loop While Not head Is Nothing
Form1.Cls
End Sub
Private Sub leave_Click()
End
End Sub
Private Sub print_Click()
Set pointer = head
If head Is Nothing Then
    MsgBox "链表为空"
Else
 While Not pointer Is Nothing
        Print pointer.x
        Set pointer = pointer.nextnode
        If ObjPtr(pointer) = ObjPtr(head) Then                 'objptr返回对象的地址
             Exit Sub                                          'strptr返回变长字符串的字符串数据地址
        End If                                                 'varptr返回变量的地址
        DoEvents                                               '用与获取变量地址,是函数。
Wend
End If
End Sub
该代码在VB6.0+WINME中调试通过。


End of《循环链表以及相关操作(VB实现)》

[] [返回上一页] [打 印] [收 藏]
 
∷相关“循环链表以及相关操作(VB实现)”文章评论∷
(评论内容只代表网友观点,与本站立场无关!) [更多评论...]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站目录 鄂ICP备06007162
开源盛世 版权所有Copyright © 2003-2005 VSCodes.Com. All Rights Reserved.