Quiz05.js 1.83 KB
function Queue(){
    this.data = [];
    this.topIdx = -1;
    this.bottomIdx = -1;
    this.enqueue = enqueue;
    this.dequeue = dequeue;
}

function enqueue(_data){
    this.data.push(_data);
}

function dequeue(){
    return this.data.shift();
}


var q = new Queue;
q.enqueue(3);
q.enqueue(2);
q.enqueue(7);
q.enqueue(4);
q.enqueue(9);
console.log(q.dequeue());
console.log(q.dequeue());
console.log(q.dequeue());
console.log(q.dequeue());
console.log(q.dequeue());
console.log(q.dequeue());

console.log("----");


// 스택 생성자를 만듬.
function Stack() {
    this.data = [];                         // 스택 Data가 저장 되는 공간.
    this.topIdx = -1;                        // 스택의 가장 상단의 인덱스
    this.push = push;                       // Push 함수 등록
    this.pop = pop;                         // Pop 함수 등록
}

// Push 함수
function push(pushedData) {
    this.topIdx++;                          // 현재 Top의 Index를 증가
    this.data[this.topIdx] = pushedData;    // 파라미터를 Stack에 넣어줌.
}

// Pop 함수
function pop() {
    var dummyIdx = this.topIdx;             // Top의 Index를 임시로 저장 할 변수 생성
    this.topIdx--;                          // Pop이 되므로 Top Index 감소
    return this.data[dummyIdx];             // Pop된 Data를 반환함.
}

var s = new Stack();                        // 생성자를 이용해 Stack 생성

s.push(1);                                  // Stack에 Push 함수 사용.
s.push(3);
s.push(5);
s.push(2);
s.push(4);
s.push(7);

console.log(s.pop());                       // Pop 함수 결과 로그에 출력.
console.log(s.pop());
console.log(s.pop());
console.log(s.pop());
console.log(s.pop());
console.log(s.pop());
console.log(s.pop());                       // 출력 결과가 없을 경우 "Undefined" 출력됨.