JavaScript Stack & Queue
1. Stack
- FILO(First In Last Out) || LIFO(Last In First Out)
- Field
- maxSize
- 스택 배열의 최대 사이즈
- top
- 현재 스택 배열에 입력된 데이터 위치
- array
- 스택 배열
- Method
- pop
- 마지막에 입력된 데이터 반환
- 만약 데이터가 없으면 없다고 반환
- push
- 스택 배열에 차례로 입력
- top이 maxSize와 같거나 크면 공간이 없다고 반환
- peek
- 마지막에 입력된 데이터 확인
function Stack(max_size) {
const maxSize = max_size;
let top = 0;
let array = [];
return {
pop() {
return (top == 0) ? "값이 없습니다" : array[top--];
},
push(data) {
(top >= max_size) ? console.log("더 이상 입력할 수 없습니다") : array[++top] = data;
},
peek() {
return array[top];
}
}
}
var stack = new Stack(3);
console.log(stack.pop());
console.log(stack.push(1));
console.log(stack.push(2));
console.log(stack.push(3));
console.log(stack.push(4));
console.log(stack.peek());
console.log(stack.pop());
console.log(stack.pop());
console.log(stack.pop());
console.log(stack.pop());
- maxSize
- 스택 배열의 최대 사이즈
- top
- 현재 스택 배열에 입력된 데이터 위치
- array
- 스택 배열
- pop
- 마지막에 입력된 데이터 반환
- 만약 데이터가 없으면 없다고 반환
- push
- 스택 배열에 차례로 입력
- top이 maxSize와 같거나 크면 공간이 없다고 반환
- peek
- 마지막에 입력된 데이터 확인
function Stack(max_size) {
const maxSize = max_size;
let top = 0;
let array = [];
return {
pop() {
return (top == 0) ? "값이 없습니다" : array[top--];
},
push(data) {
(top >= max_size) ? console.log("더 이상 입력할 수 없습니다") : array[++top] = data;
},
peek() {
return array[top];
}
}
}
var stack = new Stack(3);
console.log(stack.pop());
console.log(stack.push(1));
console.log(stack.push(2));
console.log(stack.push(3));
console.log(stack.push(4));
console.log(stack.peek());
console.log(stack.pop());
console.log(stack.pop());
console.log(stack.pop());
console.log(stack.pop());
2. Queue
- FIFO(First In First Out) || LILO(Last In Last Out)
- Field
- maxSize
- 큐 배열의 최대 사이즈
- front
- 큐 배열의 앞(머리)부분으로 출력할 때 활용
- rear
- 큐 배열의 뒤(꼬리)부분으로 입력된 아이템을 체크한다
- array
- 큐 배열
- Method
- enqueue
- 큐 배열에 데이터 입력
- 큐의 꼬리부분과 최대 크기 -1한 사이즈와 같다면 입력 불가라고 출력
- dequeue
- 큐에 가장 먼저 입력된 데이터 출력
- front와 rear이 만나면 데이터가 더 이상 없다고 출력
- print
- 큐 배열에 있는 모든 데이터 출력
function Queue(max_size) {
const maxSize = max_size;
let front = -1;
let rear = -1;
let array = [];
return {
enqueue(data) {
(rear == maxSize-1) ? console.log("더 이상 입력할 수 없습니다.") : array[++rear] = data;
},
dequeue() {
return (front == rear) ? "입력된 값이 없습니다" : array[++front];
},
print() {
let str = "";
for(let i = 0; i < maxSize; i++) {
if(i > front || i < rear) {
str += `queue : ${array[i]}\n`;
}
}
return str;
}
}
}
var queue = new Queue(3);
console.log(queue.dequeue());
console.log(queue.enqueue(1));
console.log(queue.enqueue(2));
console.log(queue.enqueue(3));
console.log(queue.print());
console.log(queue.dequeue());
console.log(queue.dequeue());
console.log(queue.dequeue());
console.log(queue.dequeue());
- maxSize
- 큐 배열의 최대 사이즈
- front
- 큐 배열의 앞(머리)부분으로 출력할 때 활용
- rear
- 큐 배열의 뒤(꼬리)부분으로 입력된 아이템을 체크한다
- array
- 큐 배열
- enqueue
- 큐 배열에 데이터 입력
- 큐의 꼬리부분과 최대 크기 -1한 사이즈와 같다면 입력 불가라고 출력
- dequeue
- 큐에 가장 먼저 입력된 데이터 출력
- front와 rear이 만나면 데이터가 더 이상 없다고 출력
- print
- 큐 배열에 있는 모든 데이터 출력
function Queue(max_size) {
const maxSize = max_size;
let front = -1;
let rear = -1;
let array = [];
return {
enqueue(data) {
(rear == maxSize-1) ? console.log("더 이상 입력할 수 없습니다.") : array[++rear] = data;
},
dequeue() {
return (front == rear) ? "입력된 값이 없습니다" : array[++front];
},
print() {
let str = "";
for(let i = 0; i < maxSize; i++) {
if(i > front || i < rear) {
str += `queue : ${array[i]}\n`;
}
}
return str;
}
}
}
var queue = new Queue(3);
console.log(queue.dequeue());
console.log(queue.enqueue(1));
console.log(queue.enqueue(2));
console.log(queue.enqueue(3));
console.log(queue.print());
console.log(queue.dequeue());
console.log(queue.dequeue());
console.log(queue.dequeue());
console.log(queue.dequeue());
Author And Source
이 문제에 관하여(JavaScript Stack & Queue), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ansalstmd/JavaScript-Stack-Queue저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)