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

本文详细介绍了如何在 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值