大头锻炼日记3 -- vbscript静态链表实现法


 静态链表法 一种使用数组和游标方式实现单向链表的方法。  甚至可以用并行基本类型数组来模拟对象类型数组。
用vbscript实现的效果。

以下为静态链类主体:
Option Explicit
' ----------------------------------------------------------- 
'      (+)线     by.Shine
' -----------------------------------------------------------
Class StructNode         ' Node 
     Private data         '
     Private cur          ' ()
    
     Public Property  Let  letData(da)      ' data set
         data =da
     End Property
     Public Property  Get getData          ' data get
         getData =data
     End Property
     Public Property  Let  letCur(c)        '  set
          If c  <  0  Then
               MsgBox  " Cur is not correct"
          Else
              cur =c
          End If
     End Property
     Public Property  Get getCur           '  get
         getCur =cur
     End Property
End  Class
Class StaticLinked                                       '
     Public  StructArr( 10)                                 ' 10
     Public Sub  Class_Initialize                          '
          Dim i
          For i = 0  To  9 Step  1
               Set  StructArr(i) = New StructNode              ' Node
               If i  =  9  Then
                    StructArr(i).letCur = 0                    '
               Else
                    StructArr(i).letCur =i + 1                  '
               End If
          Next
     End  Sub
     Private  Function Malloc                              '
          Dim i 
         i = StructArr( 0).getCur
          StructArr( 0).letCur = StructArr(i).getCur
         Malloc =i
     End Function
     Public Sub  Free(index)                               '
          StructArr(index).letCur = StructArr( 0).getCur
          StructArr( 0).letCur =index
     End  Sub
     Public  Function Length                               '
          Dim count,i
         count = 0
         i = StructArr( 9).getCur
          Do  While i <> 0
              i = StructArr(i).getCur
              count =count + 1
          Loop
         Length =count
     End Function
     Public Sub  Insert(index,elem)                        '
          Dim ln,i,j,temp
         temp = 9
         ln =Length
          If index  <  1  Or index  > ln + 1  Then
               MsgBox  " Index is not correct"
               Exit Sub
          End If
         i =Malloc
          If i  >  0  Then
               StructArr(i).letData =elem
               For j = 1  To index -1 Step  1
                   temp = StructArr(temp).getCur
               Next
               StructArr(i).letCur = StructArr(temp).getCur
               StructArr(temp).letCur =i
          Else 
               MsgBox  " Can not get free space"
               Exit Sub            
          End If
     End  Sub
     Public Sub  Delete(index)                             '
          Dim j,ln,temp
         ln =Length
          If index  <  1  Or index  > ln  Then
               MsgBox  " Index is not correct"
               Exit Sub
          End If
         temp = 9
          For j = 1  To index -1 Step  1
              temp = StructArr(temp).getCur
          Next
         j = StructArr(temp).getCur
          StructArr(temp).letCur = StructArr(j).getCur
          Free(j)
     End  Sub 
     Public  Function IsRaw                                '
          If Length  >  0  Then
              IsRaw = False
          Else
              IsRaw = True
          End If
     End Function
     Public  Function Print                                '
          Dim j,var
         j =TestSL. StructArr( 9).getCur                
         var = " "
          For i = 1  To Length Step  1
              var =var & StructArr(j).getData & "  "             '  
              j = StructArr(j).getCur
          Next
          MsgBox var
     End Function            
End  Class

以下为类实例对象测试代码:
' ------------------------------- 
'        
' ------------------------------- 
Dim TestSL,i,j,data
Set TestSL = New StaticLinked                  '
 
MsgBox  " list length is " &TestSL.Length       '
MsgBox TestSL.IsRaw                          '
TestSL.Insert  1, " A"                          '
TestSL.Insert  2, " C"
TestSL.Insert  3, " D"
TestSL.Insert  4, " E"
TestSL.Insert  2, " B"
MsgBox  " list length is " &TestSL.Length       '
MsgBox TestSL.IsRaw 
TestSL.Print                                 '
data = " "
For i = 0  To  9 Step  1
    data =data & " Index" &i & " {Data:" &TestSL. StructArr(i).getData & "  ,Cur:index" &_
    TestSL. StructArr(i).getCur &  " }   "       '
Next
MsgBox data 
TestSL.Delete  4                              '
TestSL.Delete  3
TestSL.Print
data = " "
For i = 0  To  9 Step  1                 
    data =data & " Index" &i & " {Data:" &TestSL. StructArr(i).getData & "  ,Cur:index" &_    
    TestSL. StructArr(i).getCur &  " }   "       '
Next
MsgBox data 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值