일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 자료구조
- IOS
- 자바스크립트
- 비동기
- HTML
- SWIFT
- hokidoki
- Hitit
- 힛잇
- 스위프트
- 호키스
- 리액트
- TDD
- Svelte
- 리액트 예제
- 개발
- 계명대 이종호
- javascript
- queue
- 개발자
- 계명대
- jest
- react
- hokeys
- 이종호
- 자스민
- 스벨트
- 호키도키
- 자바스크립트 자료구조
- data structure
Archives
- Today
- Total
Dog foot print
[Swift] Stack 만들기 본문
서론 :
기존에 자바스크립트에서 Stack강의에 자세한 설명이 존재하기 때문에 자료구조에 대한 정의 및 함수는 이번 포스트에서 다루지 않았습니다.
코드 :
class Stack<T> {
private var __stack : [T] = [];
private var count : Int = 0;
private var maxCount : UInt = UInt.max;
init(count : Int) {
maxCount = UInt(count)
}
func push(_ element : T){
guard count != maxCount else {
print("over flow danger")
return ;
}
__stack.append(element)
count += 1;
}
func peek() -> T{
guard count != 0 else {
return "empty" as! T
}
return __stack[count - 1]
}
func pop() -> T{
guard count != 0 else {
return "empty" as! T
}
let temp = __stack.remove(at: count - 1);
count -= 1;
return temp;
}
func size() -> Int{
return count
}
}
let stack = Stack<Any>(count: 10);
위의 코드에서는 generic을 사용 하였기 때문에, 다른 타입의 값이 전달되어도, 사용 가능하다. 이는 사용 사례에 따라 장점이 될 수도 단점이 될 수 있다. 아래 코드에서는 같은 데이터 타입끼리만 넣을 수 있도록 타입 체크를 한 코드이다.
class Stack<T> {
private var __stack : [Any] = [];
private var count : Int = 0;
private var maxCount : UInt = UInt.max;
init(count : Int) {
maxCount = UInt(count)
}
func push(_ element : Any){
guard count != maxCount else {
print("over flow danger")
return ;
}
if count != 0 {
if type(of : __stack[0]) != type(of: element){
print("type error !");
return;
}
}
__stack.append(element)
count += 1;
}
func peek() -> Any{
guard count != 0 else {
return "empty" as! T
}
return __stack[count - 1]
}
func pop() -> Any{
guard count != 0 else {
return "empty" as! T
}
let temp = __stack.remove(at: count - 1);
count -= 1;
return temp;
}
func size() -> Int{
return count
}
}
반응형
'IOS > Swift' 카테고리의 다른 글
[SWIFT] Set 집합 (0) | 2021.07.01 |
---|---|
[SWIFT] 문자열 보간법과 트리플 쿼우팅 (0) | 2021.06.30 |
[SWIFT] 기본 자료형[2] (0) | 2021.06.29 |
[SWIFT] 기본 자료형 및 숫자 타입 (0) | 2021.06.29 |
[swift] 변수 사용하기 (0) | 2021.06.28 |
Comments