- 실행환경 : nodejs
- javascript를 이용한 queue 구현
- 배열의 구조,api를 활용
- javascript의 약한 언어의 특징 때문에 쉬운 구현이 가능
- 때문에 크기에 제한을 두지 않는다.(메모리 크기까지 가능)
- 같은 의미로서 linked list로 구현하는 큐의 장점( 큐의 크기에 제한이 적다)라는 점 역시 가지고 있다.
- splice라는 array함수를 이용하여 중간 삽입도 쉽게 구현이 가능하다.
- (구현 안 한건 비밀)
- shift 함수를 이용하여 font,rare의 인덱스를 관리하지 않아도 되게끔 구현하였다.
- queue의 특징
- first in first out, last in last out 특징
- tree의 깊이 우선탐색, sliding window 등 주로 순서 처리의 시스템에 쓰인다.
- queue 용어
- enqueue (,= put)
- 삽입, queue의 맨뒤에 해당 엘리먼트를 삽입한다.
- dequeue (,= get)
- 삭제, queue의 맨 앞에 해당하는 엘리먼트를 리턴, 삭제한다.
- rare
- 맨 뒤의 값, enqueue 한 값을 가르키게 된다.
- front (,= head)
- 맨앞의 값, dequeue의 대상이 된다.
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 | var queue = function(){ this.datas = []; } queue.prototype.isEmpty = function(){ return this.datas.length==0?true:false; } queue.prototype.length = function(){ return this.datas.length; } queue.prototype.enqueue = function(element){ this.datas.push(element); // console.log("-------------------------------------------------------------"); // console.log("enqueue ",element); // console.log("-------------------------------------------------------------"); this.print(); } queue.prototype.dequeue = function(){ element = this.peek(); this.datas.shift(); // console.log("-------------------------------------------------------------"); // console.log("dequeue, return ",element); // console.log("-------------------------------------------------------------"); // this.print(); return element; } queue.prototype.peek = function(){ element = this.datas[0]==undefined?null:this.datas[0]; return element; } queue.prototype.toArray = function(){ return this.datas; } queue.prototype.print = function(){ console.log(this.datas); } queue.prototype.delAll = function(){ this.dats = []; } // Q = new queue(); // Q.enqueue(5); // Q.enqueue(3); // Q.dequeue(); // Q.enqueue(8); // Q.enqueue(7); // Q.dequeue(); // Q.enqueue(9); // Q.enqueue(10); // Q.dequeue(); module.exports = queue; |
아래 github또는 블로그 내에 다른 stack, linked list, tree에 대한 구현 글이 있습니다..
github에는 실행 데모도 있습니다.
https://github.com/ignocide/data-structure
댓글 없음:
댓글 쓰기