[原创]手把手教VB之数据结构篇(一)

snowcloud2002 2003-07-25 09:30:54
线性表结点的插入和删除算法

'作者:Snowcloud
'插入结点
'函数名称: NodeInsert(Pos As Integer, Num As Integer, TableName As Variant, Cnt As Integer) As Boolean
'参数: Pos As Integer要插入结点的位置,Num As Integer要插入的数值,TableName As Variant线性表名称,Cnt As Integer线性表长度
'返回值: Boolean

Function NodeInsert(Pos As Integer, Num As Integer, TableName As Variant, Cnt As Integer) As Boolean
'改变源线性表长度:插入结点后线性表长度加一
ReDim Preserve TableName(UBound(TableName) + 1)
'对线性表中第i个元素到最后一个元素的位置后移一位
For i = (UBound(TableName)) To (Pos + 1) Step -1
If i < 1 Or i > (UBound(TableName)) Then
Insert = False
Exit Function
Else
TableName(i) = TableName(i - 1)
End If
Next
'将要插入的元素放到第i个位置
TableName(i) = Num
'记录改变后的线性表长度
Cnt = UBound(TableName) + 1
Insert = True
End Function

'删除结点
'函数名称: NodeDelete(Pos As Integer, TableName As Variant, Cnt As Integer) As Boolean
'参数: Pos As Integer要删除结点的位置,TableName as Variant线性表名称,Cnt As Integer线性表长度
'返回值: Boolean
Function NodeDelete(Pos As Integer, TableName As Variant, Cnt As Integer) As Boolean
'对线性表中第i个元素到最后一个元素的位置前移一位
For i = Pos To (UBound(TableName))
If i < 1 Or i > (UBound(TableName)) Then
Delete = False
Exit Function
Else
TableName(i - 1) = TableName(i)
End If
Next
'改变源线性表长度:删除结点后线性表长度减一
ReDim Preserve TableName(UBound(TableName) - 1)
'记录改变后的线性表长度
Cnt = UBound(TableName) - 1
Delete = True
End Function

===============================================
欢迎大家发表看法,有问题的地方大家请指正,谢谢!
===============================================
...全文
163 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
snowcloud2002 2003-07-26
  • 打赏
  • 举报
回复
对,在顺序存储结构的线性表中插入和删除一个数据元素,平均所需移动表中一半的元素,若表长为n则Insert,Delete的时间复杂性为O(n),所以当n很大的话,效率是十分低的。

在此只是抛砖引玉,希望大家能够学习一下数据结构,并自行的写一些算法例子,这样有助于提高。

==========================
谢谢大家支持啊!
==========================
James0001 2003-07-26
  • 打赏
  • 举报
回复
可以,就是效率好像低了点儿。
不错
boywang 2003-07-25
  • 打赏
  • 举报
回复
node比较多的情况下,楼主的办法不是太慢了点吗?
zjcxc 2003-07-25
  • 打赏
  • 举报
回复
学习
zyl910 2003-07-25
  • 打赏
  • 举报
回复
up

743

社区成员

发帖
与我相关
我的任务
社区描述
VB 版八卦、闲侃,联络感情地盘,禁广告帖、作业帖
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧