发新话题
打印

vbs(asp)的栈类

vbs(asp)的栈类


用js可以用array对象很容易的实现栈的功能,但在vbs中没有相应的功能,没办法,只有自己动手了! x7 G# [& G! B, O1 F0 q
  如果你的栈不了解请查看数据结构的相关内容。这个栈类是参照c  的栈类写的,用法一样。用这个类你也可以很方便的修改出队列的类
5 ^4 X3 O6 K" w+ T- U) r& W
' |- _3 M7 y: _  B/ z2 v  0 C: A- R7 ~: j
9 T: l3 `$ j% r( t6 F
%9 \8 O* q6 L5 ~/ K; h
'**********************************************2 u+ ?6 w& h6 }- [
' vbs栈类
4 o+ b( G; H5 q% f5 F" F6 w- W# N' push(string)进栈/ T9 ]/ c% b' \
' getTop取栈顶元素& ~2 Z3 [7 M+ y
' pop去掉栈顶元素4 `; _3 q( L8 x8 i
' isempty是否栈空9 ~6 f+ U" b" i: O8 C
' isfull是否栈满(pMax设置了大小,可自行修改)) V; C: D7 r- y( M
'
, T" b( ^. }1 b- \! F2 o8 k) q' D' 木鸟 2002.10.10* b( g9 n, @8 {- R% }3 B
' http://www.aspsky.net/
( s5 m  G2 ?, u- s8 _'**********************************************  
5 `5 w3 K; h, r8 N; L
2 C. r. z8 C* E4 Y5 Z4 c& R9 |class Stack
5 Q1 s- E. d$ g( {8 A8 Uprivate pArr, pString, pMax
8 p' i" ~) N# h0 f( y7 W# T9 Kprivate tab* J4 W0 `9 t$ C( q8 S4 G
private sub class_initialize()
+ c. n" p3 S( y# X9 xtab=chr(9)! Y$ }' C( o3 v! Q
pMax=1000 '最大容量' A. O$ H7 c: X$ [' R9 G0 {; c& j
end sub
. N- b& N* |6 T' c; O7 B+ Sprivate sub class_terminate()% M- r  J6 x! N$ ~
if isarray(pArr) then4 S( }/ Q- c! q! V: s. `
erase pArr- N3 ?5 k) x# M5 r
end if
/ s" N; p' Z: J: L& Gend sub" i9 R5 o& r; c2 m
- c# y5 i8 I' j' t: R6 V0 v
public function push(str)
7 m7 f& I8 c2 g. D  bif str"" and instr(str,tab)1 and not Isfull then
" s/ `7 V1 g& J, c0 H8 v- W; pif isarray(pArr) then
; U6 g+ r( c8 J6 \  M) |pString=join(pArr,tab)
$ F! W. P6 {- r- O  Aend if1 q8 z" R7 B- |2 k
pString=pString  tab  str  u' d( w  N  o* u  ~% E
pArr=split(pString,tab)
" W. w! k& [% M: N9 gpush=true
& f( _, D9 x3 C0 ^& jelse0 G9 L3 X0 r" |+ }* A$ g
push=false# C3 F6 ~* x  w+ }. \9 @
end if: i, i( N- ?! L+ O# L
end function. C6 B% m% F0 e3 X, e) {

1 f, H2 n- X% F! ?) Kpublic function GetTop()
4 J5 ?# ]) {* r6 aif not isarray(pArr)0 then5 k6 P" P8 q! G, ]8 n
GetTop=null0 ^6 L3 ^" \5 ^. e6 b- |! X
else
* N* `$ `8 \) l. m% |$ a6 u- ?if ubound(pArr)0 then. {. w+ R/ g. T2 _6 N& N
GetTop=null
! Y0 I; K4 h1 l. y; @else, G- f" v" b3 t: }( d( w1 V
GetTop=pArr(Ubound(pArr))
9 q. P* r2 D9 @. x0 [# j* `end if
: c9 U% B' Y  z3 ]! h5 Zend if2 P4 I; o) P: O! K* l
end function% ^8 T7 e5 t( D- o8 I* T3 Q

: {) x0 t0 I) a! V* Kpublic function Pop()
2 r3 C' O+ V9 u9 M8 v2 M1 uif not isArray(pArr) then
4 _3 n- o; G) @- x9 y2 d! cPop=false5 k9 T  d* Z- t* c1 _
else1 Z' |, K, v* w% ?4 T9 f. r# j' D9 z
if Ubound(pArr)0 then+ o) h: ~0 Z6 h" L  _; M
Pop=false) g! {  P) [  o% I6 u
else& J" m" ?7 A9 c
pString=join(pArr,tab). _, [9 S$ `" c
pString=left(pString,inStrRev(pString,tab)-1)
9 {+ S$ A( \6 X( z+ RpArr=split(pString,tab)
9 O, V( }. Z" @! J: lPop=true, N& F0 [: g* ?1 |- i
end if
) G  [. c7 n2 e& d5 X  C: oend if
. x( l6 h+ h9 P, D6 B- send function
3 w( L% A3 \5 c1 v3 w; u$ @3 ~' O( t+ Z( T" _
public function Isempty()
+ `8 B7 E/ H& n" X4 Eif not isArray(pArr) then/ n* Z# @- V* {
Isempty=true' P% N) A) G5 ~# g8 T
else4 E! q% O6 d. s  M
if Ubound(pArr)0 then
+ G5 _( `. Y4 q) L" p: Cisempty=true
9 `; l5 t+ _# {  y" V6 j( gelse
; J& p+ [3 P1 Y4 I0 Aisempty=false
6 l; C7 r$ M2 e! ^! yend if) a$ c" Z+ ^4 V  C/ c( Q5 }
end if- @3 ~4 V- r4 T; f. |
end function: R; R# }2 l0 F# u2 P* h1 v: `2 T
' I0 P) @7 J3 `3 @) e. G) J% W
public function Isfull()* y$ m" x  H. H! m4 c5 P
if not isArray(pArr) then
. W$ P; z6 W2 m$ @8 NIsfull=false7 ?, ?" ^* N7 w: ^. f3 r! [" C; s
else
+ d1 s1 ^6 i6 Y8 ]  P5 oif ubound(pArr)pMax then
! {+ p: h! {8 U  M/ uIsfull=false% J+ `  `6 i) ^" b$ n+ c& @
else, ~& k, F: O: y+ W! e' j
Isfull=true# x/ E2 ^* x7 C' `& V6 A# K8 @
end if
, W/ F4 ?, G' ?3 _end if
5 K4 f0 z0 n: t/ r/ nend function
, D2 Y" m, V1 o& i3 m1 Bend class
6 g( ?) `- x  b. w" U7 h/ G) A%



点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹

TOP

发新话题