코드코코

210831 stack 과 queue 본문

기록/javascript

210831 stack 과 queue

코드코코 2021. 8. 31. 13:43

//스택이 넘침 : 오버플로우 -뻥난다,블루스크린

//더이상 뺄 수 없을때 언더플로우

 

//stack : 마지막에 삽입된 항목을 제거하고 접근할 수 있는 자료구조(후입선출 Last In Fist Out).

 

function Stack(arr){

    this.arr = [];

    if(arrthis.arr =arr;

}

 

Stack.prototype.getBufferfunction(){

    return this.arr.slice();

};

Stack.prototype.isEmpty = function(){  //스택이 비어 있는지 확인

    return this.arr.length ==0;

};

Stack.prototype.insert = function(data){ //스택에 넣기

    this.arr.push(data);

};

Stack.prototype.pop=function(){ 

    if(this.isEmpty()) throw 'error';//스택이 비어있으면 에러 뱉기

    return this.arr.pop(); //스택에 빼기

}

function stackSearch(st,data){ // 찾기

    var bufArr=st.getBuffer();

    var bufferStack = new Stack(bufArr);

 

    while(!bufferStack.isEmpty()){//비어있을떄까지

        if(bufferStack.pop()==datareturn true//데이터 빼?

    }

    return false;

}

 

var stack = new Stack();

stack.insert(1);

stack.insert(2);

stack.insert(3);

stack.insert(4);

 

console.log(stack);

stack.pop();

 

var stack1 = new Stack();

stack1.insert(10);

stack1.insert(20);

stack1.insert(30);

stack1.insert(40);

 

var search = stackSearch(stack1,40);

console.log(stack1);

console.log(search);


////////////////////////////////////////////////////////////////////////////

 

//큐: 먼저 들어온 데이터가 먼저 빠진다.

 

function Queue(arr){

    this.arr=[];

    if(arrthis.arr =arr;

}

 

Queue.prototype.getBuffer = function () {

    return this.arr.slice();

};

Queue.prototype.isEmmpty = function (){

    return this.arr.length == 0;

};

Queue.prototype.enqueue = function (data) {

    return this.arr.push(data);

};

Queue.prototype.dequeue = function () {

    return this.arr.shift();

};

 

var a =[5,7,8,9];

a.sort()

 

var queue = new Queue();

queue.enqueue(1);

queue.enqueue(2);

queue.enqueue(3);

queue.enqueue(4);

 

queue.dequeue();

console.log(queue);

'기록 > javascript' 카테고리의 다른 글

[자바스크립트] 변수와 var, let, const  (0) 2021.12.28
자바스크립트 런타임  (0) 2021.09.10
210825 자바스크립트 수강내용  (0) 2021.08.25