단순한 규칙을 가지고 있는 리스트 먼저 들어간 데이터가 나중에 나온다.
지난 배열에서 작성했던 LinkedList를 사용하면 쉽게 작성 할 수 있다.
import { LinkedList } from './LinkedList.mjs';
class Stack {
constructor() {
this.list = new LinkedList();
}
push(data) {
this.list.insertAt(0, data);
}
pop() {
try {
return this.list.deleteAt(0);
} catch (e) {
return null;
}
}
peek() {
return this.list.getNodeAt(0);
}
isEmpty() {
return this.list.count == 0;
}
}
export { Stack };
아래와 같이 테스트 해준다.
import { Stack } from './Stack.mjs';
let stack = new Stack();
console.log('===== 첫번째 출력 =====');
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
console.log(stack.pop().data);
console.log(stack.pop().data);
console.log(stack.pop().data);
console.log(stack.pop().data);
console.log('===== 두번째 출력 =====');
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
console.log(stack.peek().data);
stack.pop();
console.log(stack.peek().data);
console.log(`isEmpty: ${stack.isEmpty()}`);
stack.pop();
stack.pop();
stack.pop();
console.log(`isEmpty: ${stack.isEmpty()}`);
console.log(stack.pop());
결과는 다음과 같다
===== 첫번째 출력 =====
4
3
2
1
===== 두번째 출력 =====
4
3
isEmpty: false
isEmpty: true
null
7. 셋 (set) (0) | 2023.07.13 |
---|---|
6. 해시 테이블(HashTable) (0) | 2023.07.12 |
5. 덱(deque) (0) | 2023.07.11 |
4. 큐(Queue) (0) | 2023.07.10 |
2. 배열과 연결 리스트 (0) | 2023.07.06 |