티스토리 뷰
JavaScript로 Stack구현
자바스크립트로 Stack을 구현해 보았다.
Stack개념을 떠올리면 먼저 배열을 떠올릴 수 있다.
스택은 Last in First out 구조로 되어있다. 즉 가장 최근 자료는 꼭대기에 있으며, 가장 처음 자료는 맨 밑바닥에 있다.
박스를 차례대로 차곡차곡 쌓는다고 생각하면 이해 하기 수월하다.
가장 마지막에 쌓은 박스가 가장 위에 있을 것이며, 맨 밑바닥에 있는 박스가 처음 놓은 박스이다.
cf) shift, unshift는 stack과 관련없이 연습으로 작성해 보았습니다.
//stack
const Stack = (function () {
function Stack() {
this.top = null;
this.count = 0;
}
function Node(data) {
this.data = data;
this.next = null;
}
Stack.prototype.push = function(data) {
const node = new Node(data);
node.next = this.top;
this.top = node;
this.count++
return this.count;
}
Stack.prototype.pop = function () {
if (!this.top) {
return false;
}
const data = this.top.data;
this.top = this.top.next;
this.count--;
return data;
}
Stack.prototype.shift = function () {
let top = this.top;
let secondNode;
while(top.next) {
secondNode = top;
top = top.next;
}
secondNode.next = null;
}
Stack.prototype.unshift = function (data) {
let top = this.top;
const node = new Node(data);
let firstNode;
while(top) {
firstNode = top;
top = top.next;
}
firstNode.next = node;
}
return Stack;
})();
const stack = new Stack();
stack.push(1);
stack.push(2);
stack.push(4);
stack.push(5);
stack.shift()
stack.pop();
stack.unshift(11);
참고 및 출처 https://www.zerocho.com/category/Algorithm/post/5800b79e1dfb250015c38db6
'Algorithm' 카테고리의 다른 글
LeetCode - Minimum Absolute Difference in BST in JavaScript (0) | 2021.11.25 |
---|---|
LeetCode - Lowest Common Ancestor of a Binary Search Tree in JavaScript (0) | 2021.11.24 |
Merge Sort in JavaScript (0) | 2021.11.20 |
자료구조 Queue(큐) in JavaScript (0) | 2021.11.07 |
해시 테이블(hash table) JavaScript (0) | 2021.10.27 |
댓글