2010년 10월 29일 금요일

클래스모듈로 스택 데이터구조 만들기

VBA편집기에서 클래스모듈을 삽입한 후, 속성창에서 이름을 StackItem으로 바꾼다.

클래스 모듈(StackItem)
' 스택(Stack) 데이터 구조

' 변수 선언
Public Value As Variant
Public NextItem As StackItem
Dim siTop As StackItem
Public Sub Push(ByVal varText As Variant)
    ' 스택의 맨위에 새로운 항목을 추가하고, 이 것을 맨위로 설정한다.
    Dim siNewTop As New StackItem
    siNewTop.Value = varText
    Set siNewTop.NextItem = siTop
    Set siTop = siNewTop
End Sub
Public Function Pop() As Variant
    If Not StackEmpty Then
        ' 현재 맨위 항목의 값을 얻고(사라짐), 그 다음 항목을 맨위항목으로 설정한다.
        Pop = siTop.Value
        Set siTop = siTop.NextItem
    End If
End Function
Property Get StackEmpty() As Boolean
    ' 스택이 비어있는가를 검사. Is the stack empty?  It can
    ' only be empty if siTop is Nothing.
    StackEmpty = (siTop Is Nothing)
End Property
Property Get StackTop() As Variant
   '항목을 제거하지 않고 맨위 항목의 값을 얻는다.
    If StackEmpty Then
        StackTop = Null
    Else
        StackTop = siTop.Value
    End If
End Property

일반모듈에서 테스트
Dim stkTest As New StackItem
Sub TestStacks()
    stkTest.Push "안녕!"
    stkTest.Push "그동안"
    stkTest.Push "잘"
    stkTest.Push "지냈어요?"
    stkTest.Push "^_^;;"
    Do While Not stkTest.StackEmpty
        Debug.Print stkTest.Pop()
    Loop
    Debug.Print
    Debug.Print "테스트 종료"
End Sub
Source : http://msdn.microsoft.com/en-us/library/aa227567(VS.60).aspx

댓글 없음:

댓글 쓰기

2.1 벡터(Vector)

  R의 자료구조 : 벡터, factor, 행렬, 배열, 데이터프레임, 리스트 벡터(Vector)는 동일한 형태(예, 숫자)의 데이터 구성인자가 1개 이상이면서 1차원으로 구성되어 있는 데이터 구조입니다. w <- c(1, 2, 3, 4, ...