- 실행환경 : nodejs
- javascript를 이용한 stack 구현
- 배열의 구조,api를 활용
- javascript의 약한 언어의 특징 때문에 쉬운 구현이 가능
- 때문에 크기에 제한을 두지 않는다.(메모리 크기까지 가능)
- javascript의 array 메소드에 push, pop을 활용하여 간단한 구현을 하였습니다.
- stack의 특징
- last in first out, first in last out 특징
- 인터럽트, tree의 전위 순회 등에 쓰인다.
- (제 tree의 구현에 사용했습니다.)
- stack용어
- push(,= put)
- 삽입, stack의 맨 위에 해당 엘리먼트를 삽입한다.
- pop(,= get)
- 삭제, stack의 맨 위에 해당하는 엘리먼트를 리턴, 삭제한다.
- top
- 맨 위의 값, push한 값, pop이 될 값이 된다.
- buttom
- 맨 아래, top == buttom이라면 stack이 비었음을 의미한다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | var stack = function(){ this.datas = []; } stack.prototype.isEmpty = function(){ return this.datas.length==0?true:false; } stack.prototype.length = function(){ return this.datas.length; } stack.prototype.push = function(element){ this.datas.push(element); // console.log("-------------------------------------------------------------"); // console.log("push ",element); // console.log("-------------------------------------------------------------"); // this.print(); } stack.prototype.pop = function(){ element = this.peek(); this.datas.pop(); // console.log("-------------------------------------------------------------"); // console.log("pop!"); // console.log("return",element); // console.log("-------------------------------------------------------------"); // this.print(); return element; } stack.prototype.peek = function(){ element = this.datas[this.datas.length-1]==undefined?null:this.datas[this.datas.length-1]; return element; } stack.prototype.toArray = function(){ return this.datas; } stack.prototype.print = function(){ var tmp = this.datas; for(i=tmp.length-1;0<=i;i--){ console.log("│ "+this.datas[i]+" │"); } console.log("└---┘"); } stack.prototype.delAll = function(){ this.datas = []; } // S = new stack(); // S.push(3); // S.push(5); // S.push(1); // S.push(6); // S.pop(); // S.pop(); // S.push(9); // S.push(8); module.exports = stack; |
아래 github또는 블로그 내에 다른 tree, linked list, tree에 대한 구현 글이 있습니다..
github에는 실행 데모도 있습니다.
https://github.com/ignocide/data-structure
댓글 없음:
댓글 쓰기