大头锻炼日记7 -- vbscript的链表队列Queue


链表存储结构的队列,理论上无限插入元素。

以下为链表队列类和其节点类的代码: 
 
Option  Explicit
'----------------------------------------- 
'           by.Shine
'-----------------------------------------
Class  Node     'Queue
     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  Queue
     Private  Head         '
     Private  Tail         '
     Private  count        '
    
     Private  Sub  Class_Initialize         '
         Set  Head = New  Node                '
         Set  Head . SetNextP = Nothing        '
         Set  Tail = Head                    '
         count = 0
     End  Sub
     Public  Sub  InQueue ( elem )             '
         If  IsEmpty ( elem )  Then
              MsgBox  "elem is empty"
              Exit  Sub
         Else
              If  count < 1  Then
                   Head . letData = elem
                   count = count +1
              Else
                   Dim  ndobj
                   Set  ndobj = New  Node
                   Set  ndobj . setNextP = Nothing
                   ndobj . letData = elem
                   Set  Tail . setNextP = ndobj
                   Set  Tail = ndobj
                   count = count +1
              End  If
         End  If
     End  Sub
     Public  Function  DeQueue                      '   
         If  count < 1  Then                          '
              MsgBox  "Queue is empty"
              Exit  Function           
         Else
              If  count > 1  Then                      '1
                   DeQueue = Head . getData
                   Head . letData = Head . getNextP . getData
                   Set  Head . setNextP = Head . getNextP . getNextP
              Else                                 '1
                   DeQueue = Head . getData    
                   Head . letData = Empty
              End  If
              count = count -1
         End  If
     End  Function
     Public  Function  IsRaw                        '
         If  count  >  0  Then 
              IsRaw = False
         Else
              IsRaw = True
         End  If
     End  Function
     Public  Function  QLength                      '
         QLength = count
     End  Function
     Public  Function  InitQueue                    '
         count = 0
     End  Function
End  Class
 
以下为类的实例测试代码
 
' ------------------------------- 
'     
' ------------------------------- 
Dim TestLQ,i,str                             '    
Set TestLQ = New Queue                         '
MsgBox TestLQ.IsRaw                              '
MsgBox  " Queue length is " &TestLQ.QLength         '
TestLQ.InQueue  " I"                               '
TestLQ.InQueue  " L"
TestLQ.InQueue  " O"
TestLQ.InQueue  " V"
TestLQ.InQueue  " E"
TestLQ.InQueue  " Y"
TestLQ.InQueue  " O"
TestLQ.InQueue  " U"  
MsgBox TestLQ.IsRaw                              '
MsgBox  " Queue length is " &TestLQ.QLength         '
str = " "
For i = 1  To TestLQ.QLength Step  1
    str =str &TestLQ.DeQueue & "  "                   '
Next
MsgBox str                                       ' FIFO
TestLQ.InitQueue                                 '
MsgBox TestLQ.IsRaw                              '
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值