210831 stack 과 queue
//스택이 넘침 : 오버플로우 -뻥난다,블루스크린
//더이상 뺄 수 없을때 언더플로우
//stack : 마지막에 삽입된 항목을 제거하고 접근할 수 있는 자료구조(후입선출 Last In Fist Out).
function Stack(arr){
this.arr = [];
if(arr) this.arr =arr;
}
Stack.prototype.getBuffer= function(){
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()==data) return 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(arr) this.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);