Quiz05.js
1.83 KB
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
65
66
67
68
69
70
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" 출력됨.