728x90
객체지향 공부에 이어
자료구조에 대해 간단히 짚어보았다.
공부했던 객체지향 개념을 적용해서
직접 스택을 구현해본 결과
interface Stack {
readonly size: number;
pop(): string;
push(value: string): void;
}
class StackTest1 implements Stack {
private obj: any = {};
private _size: number = 0;
get size(): number {
return this._size;
}
push = (value: string) => {
this.obj[this.size.toString()] = value;
this._size++;
};
pop = () => {
this._size--;
const value = this.obj[this._size.toString()];
delete this.obj[this._size.toString()];
return value;
};
}
const stack = new StackTest1();
stack.push("jk");
stack.push("zl");
stack.push("steve");
while (stack.size !== 0) {
console.log(stack.pop());
}
type StackNode = {
value: string;
next?: StackNode;
};
class StackTest2 implements Stack {
private _size: number = 0;
private head?: StackNode;
get size(): number {
return this._size;
}
push = (value: string) => {
const node = { value, next: this.head };
this.head = node;
this._size++;
};
pop = (): string => {
if (this.head == null) {
throw new Error("no more data");
}
const node = this.head;
const value = this.head.value;
this.head = node.next;
this._size--;
return value;
};
}
const stack2 = new StackTest2();
stack2.push("value1");
stack2.push("value2");
stack2.push("value3");
while (stack2.size !== 0) {
console.log(stack2.pop());
}
위 두가지 방식으로 해보게됐다.
첫번쨰 방식은
올바른 방식이라기 보다는
이렇게도 할 수 있다 정도로만 봐야될것같다.
2번은 단일 연결 list라는 자료구조의 개념을 도입하여
스택을 구현한 예제이다.
728x90
반응형
'개발, 코딩 > 알고리즘 공부' 카테고리의 다른 글
[백준] 재귀 - 피보나치 (0) | 2022.02.03 |
---|---|
[백준] 재귀 - 팩토리얼 (0) | 2022.02.03 |
[알고리즘] 프로그래머스, 모의고사 (0) | 2021.11.02 |
[알고리즘] 프로그래머스, 베스트앨범 (0) | 2021.11.01 |
[알고리즘] 프로그래머스, 위장 (0) | 2021.11.01 |