循环链表以及相关操作(VB实现)
循环链表以及相关操作(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中调试通过。
- · 利用ODBC访问WINCC的历史数据库
- · 利用VB驱动pcAnyWhere进行自动文件传输
- · 用VB编写OPC客户端访问WINCC
- · 用Visual Basic创建复杂窗体
- · 目录选择对话框
- · 判断字符串是否是合法的EMail
- · 如何发布IE控件
- · VB调用C DLL时的参数传递问题
- · 加载整盘目录到TreeView,注意逐层展开
- · Read a byte, integer or long from memory
- · Read a string at a given address
- · 不用API,也能玩注册表--vb !(downmoon原创)
- · Resize所有控件
- · 输入N个点的坐标,由程序判断该N个点是否能构成一个凸多边形。(VB)
- · 用数组操作字符串
- · UNICODE、DBCS的一点小知识
- · Setparent函数用法技巧
- · PDU格式
- · 在PC上通过手机发送短消息
- · 自动上网抓数据的机器人
- · 一种简单的结束无法关闭的DOS窗口的方法
- · VB中各种数据类型转换函数
- · 浅谈VB中面向对象技术的封装性
- · 实时曲线的绘制和保存
- · Visual Basic 6 逆向工程与反逆向工程 (1)
- · 在PC上通过手机发送短消息(续篇)
- · Visual Basic 6 逆向工程与反逆向工程 (2)
- · 如何在Visual Basic 6.0 中连接加密的Access数据库
- · 使用Visual Basic操纵XML文档
- · 使用VB6.0设计ActiveX DLL事件
- · VB动态调用外部函数的方法
- · 建立一个程序员自己的全国性营销网络
- · 如何编写高质量的VB代码
- · 为更新到Visual Basic.NET准备你的Visual Basic 6.0应用程序
- · 再谈在VB中调用VC++开发的DLL
- · 用VB语言编程实现JPEG数据压缩
- · 用DTS实现SQL数据库的导入
- · vb实现多线程!
