스택은 last - in first - out(LIFO) 구조를 가진 자료구조이다 (후입선출, 마지막에 들어간 데이터가 먼저 나오는 구조.)
주요 operations:
Exeptions(예외처리)
스택의 적용(보류)
가장 간단한 방법이다.
데이터를 배열을 이용해 저장하고, 배열에 대한 함수를 만들어주어 class로 관리한다.
왼쪽에서부터 오른쪽으로(0번 인덱스 → top) 데이터 추가한다.
오직 'top'을 통해서만 데이터가 들어가고 나간다.
t = top index
size(): return = t+1
pop(): t <- t-1, return = S[t+1] (스택이 empty()라면 예외처리(StackEmpty))
push(o): t <- t+1, S[t] <- o (top의 인덱스가 사이즈랑 동일하면 예외처리(StackFull))
Perfomance
Limitations
Parentheses Matching(X, n) (괄호 매칭)
발상: 각각의 연산자를 스택에 저장 -> 우선순위가 높은 순서대로 pop을 한다.
singly linked list를 이용하여 구현한다.
top element는 리스트의 첫번째 노드에 저장된다.
사용되는 공간은 O(n), operation of stack ADT = O(1)