프로젝트를 진행하면서 Stack을 구현할 일이 있어 포스팅을 남긴다!
(JAVA는 언어 기본으로 Stack을 지원해줘서 따로 포스팅하지 않을 예정이다.)
Stack에 대해 궁금하다면 여기서 확인할 수 있다.
여러 타입을 stack에 넣을 예정이라 제네릭을 사용했다.
removeAll()은 프로젝트에서 필요해서 추가로 구현했다.
stack을 구현하기 전에는 class로 구성하려했는데 이런저런 이유로 struct로 결정했다.
이 부분은 struct vs class에서 다뤄보겠다.
(사실 포스팅하려고 한지 꽤됨...)
struct Stack<T> {
private var list = [T]()
var size: Int {
return self.list.count
}
var isEmpty: Bool {
return self.list.isEmpty
}
func peek() -> T? {
return self.list.last
}
mutating func push(_ item: T) {
self.list.append(item)
}
mutating func pop() -> T? {
return self.list.popLast()
}
mutating func removeAll() {
self.list.removeAll()
}
}