스택은 어떻게 생겼습니까?
스택 속성
- 검색에는 O(n) 시간이 걸립니다.
- 추가 및 제거에는 O(1) 시간이 걸립니다.
- top으로 최상위 노드를 기억하십시오.
- 쌓인 보드 모양입니다.
데이터 노드 구현
class Node {
value: number;
prev: Node | null = null;
next: Node | null = null;
constructor(value: number) {
this.value = value;
}
}
이전 및 다음 속성이 있습니다.
value 속성을 통해 데이터를 받고 있는데 숫자 데이터만 받기로 했습니다.
* 이 글에서 스택은 이중 연결 리스트나는 .
* 스택은 단일 연결 리스트이렇게도 구현할 수 있지만 편의상 이중 연결 리스트나는 .
(이중 연결 리스트 개념)
구현 스택
class Stack {
private top: Node | null = null;
private size = 0;
isEmpty() {
return this.size === 0;
}
push(node: Node) {
if (this.isEmpty()) {
this.top = node;
this.size = 1;
return;
}
this.top.next = node;
node.prev = this.top;
this.top = node;
this.size++;
}
pop(): Node | null {
if (this.isEmpty()) {
console.log("Stack is Empty!
");
return null;
}
const node = this.top;
this.top = node.prev;
node.prev = null;
node.next = null;
this.size--;
return node;
}
}
구현 코드 시험 노력하다
const stack = new Stack();
stack.push(new Node(1));
stack.push(new Node(2));
stack.push(new Node(3));
console.log(stack.pop());
console.log(stack.pop());
console.log(stack.pop());
console.log(stack.pop());
콘솔 출력
Node { next: null, prev: null, value: 3 }
Node { next: null, prev: null, value: 2 }
Node { next: null, prev: null, value: 1 }
Stack is Empty!
null