大头锻炼日记2 -- 无指针和结构体的vbscript中实现单向链表


大头锻炼日记2 -- 无指针和结构体的vbscript中实现单向链表
        继续数据结构复习,脚本实现单链。vbscript一种弱类型(无具体引用类型)无结构体和无指针的脚本中不借助宿主对象也可以实现链表。

以下为单链表类主体: vbs默认传参类型为ByRef
Option  Explicit
'----------------------------------------- 
'     线    by.Shine
'-----------------------------------------
Class  Node     '
     Private  Data         '
     Private  NextP        '
     Public  Property  Let  letData ( da )      'set
         Data = da
     End  Property 
     Public  Property  Get  getData          'get
         getData = Data
     End  Property 
     Public  Property  Set  setNextP ( obj )    'set
         Set  NextP = obj
     End  Property    
     Public  Property  Get  getNextP         'get
         Set  getNextP = NextP
     End  Property    
End  Class
Class  List       '
     Private  Head         '
     Private  Tail         '
     Private  Length       '
 
     Private  Sub  Class_Initialize         '
         Length = 0
         Set  Head = New  Node                '
         Set  Head . SetNextP = Nothing        '
         Set  Tail = Head                    '   
     End  Sub
     Public  Property  Get  getLength        '
         getLength = Length
     End  Property
    
     Public  Sub  Clear                     '
         Length = 0
         Set  Head = Nothing
         Set  Tail = Nothing    
     End  Sub
     Public  Function  IsRaw                '
         If  Length  =  0  Then
             IsRaw = True
         Else
             IsRaw = False
         End  If
     End  Function
     Public  Function  GetElem ( index )       '
         If  index  <  1  Or  index  >  Length  Then
              MsgBox  "Index is not correct"
              Exit  Function
         Else
              Dim  temp , i
              Set  temp = Head 
              For  i = 0  To  index -1  Step  1
                   Set  temp = temp . getNextP
              Next
              MsgBox  "List index" & index & " is " & temp . getData       
         End  If
     End  Function
     Public  Sub  AddHead ( elem )             '
         If  IsEmpty ( elem )  Then
              MsgBox  "elem is empty"
              Exit  Sub
         Else
              Dim  ndobj
              Set  ndobj = New  Node
              Set  ndobj . setNextP = Nothing
              ndobj . letData = elem
              Set  ndobj . setNextP = Head . getNextP
              Set  Tail = ndobj . getNextP
              Set  Head . setNextP = ndobj
              Length = Length +1
         End  If
     End  Sub         
     Public  Sub  AddTail ( elem )             '
         If  IsEmpty ( elem )  Then
              MsgBox  "elem is empty"
              Exit  Sub
         Else
              Dim  ndobj , temp
              Set  temp = Tail
              Set  ndobj = New  Node
              Set  ndobj . setNextP = Nothing
              ndobj . letData = elem
              Set  temp . setNextP = ndobj
              Set  Tail = ndobj
              Length = Length +1
         End  if
     End  Sub
     Public  Sub  Delete ( index )             '
         If  index  <  1  Or  index  >  Length  Then
              MsgBox  "Index is not correct"
              Exit  Sub
         Else
              Dim  temp , p , i
              Set  temp = Head 
              For  i = 0  To  index -1  Step  1
                   Set  p = temp
                   Set  temp = temp . getNextP
              Next
              Set  p . setNextP = temp . getNextP
              Length = Length -1 
         End  If                      
     End  Sub
     Public  Sub  AddIndex ( elem , index )      '   
         If  index  <  1  Or  index  >  Length  Then
              MsgBox  "Index is not correct"
              Exit  Sub
         Else
              Dim  ndobj , temp , p , i
              Set  ndobj = New  Node
              Set  ndobj . setNextP = Nothing
              ndobj . letData = elem
              Set  temp = Head 
              For  i = 0  To  index -1  Step  1
                   Set  p = temp
                   Set  temp = temp . getNextP
              Next
              Set  ndobj . setNextP = temp
              Set  p . setNextP = ndobj
              Length = Length +1 
         End  If      
     End  Sub
     Public  Function  Print                '
         Dim  temp , i
         Set  temp = Head
         For  i = 0  To  Length  Step  1
              Print = Print & temp . getData & " "
              Set  temp = temp . getNextP
         Next
     End  Function        
End  Class   
 
以下为实例测试代码:
' ------------------------------- 
'     
' ------------------------------- 
Dim TestLS
Set TestLS = New List              '
MsgBox TestLS.IsRaw              '
MsgBox TestLS.getLength          '
TestLS.AddHead  " W"               '
TestLS.AddHead  " S"              
TestLS.AddTail  44                '
TestLS.AddTail  33
TestLS.AddTail  " P"
TestLS.AddTail  22
TestLS.AddTail  77
TestLS.AddHead  " O"
TestLS.AddHead  99
TestLS.AddHead  66
MsgBox TestLS.getLength          
MsgBox TestLS.Print          
TestLS.Delete  3                  '
MsgBox TestLS.Print          
MsgBox TestLS.getLength      
TestLS.AddIndex  " N", 3            '
MsgBox TestLS.Print             
MsgBox TestLS.getLength
TestLS. Clear                     '
MsgBox TestLS.IsRaw
MsgBox TestLS.getLength

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值