스택과 큐에 대해서
class Stack {
constructor() {
this._arr = [];
}
push(item) {
this._arr.push(item);
}
pop() {
return this._arr.pop();
}
peek() {
return this._arr[this._arr.length - 1];
}
}
const stack = new Stack();
stack.push(1);
stack.push(2);
stack.push(3);
console.log(stack.peek());
console.log(stack.pop());
스택과 큐에 대해서
선형구조란 Linear Structure
선형구조는 데이터들이 일렬로 저장되어 있는 형태를 가진다
일렬로 저장하는 방식은 리스트와 각 데이터가 다음 데이터의 위치를 가지는 연결 리스트 두 가지
방식이 있다.
일렬로 쭉 저장되어 있는 데이터를 사용하는 방법은 리스트와 연결 리스트 외에 사용 방법에 따라
스택(Stack)과 큐(Queue)데크가 추가된다.
#Stack
스택은 데이터가 입력되면 입력되는 순서대로 쌓고, 나중에 들어온 것부터 먼저 사용하는 자료구조다.
후입선출방식(Last In First Out)LIFO형이라고 한다. 스택에 데이터를 넣는 것을 push, 데이터를 꺼내는 것을
pop이라고 한다
스택은 대표적으로 프로그램을 수행할 때 사용한다. Main프로그램에서 a라는 함수를 호출하면 Main 위에 a가
쌓이고, a가 실행되는 중에 b를 호출하면 Main 위에 a 위에 b가 쌓인다. 그리고 b가 끝나면 빠져나가고, a가 빠져나가고,
Main이 빠져나간다. 이런식으로 실행된다.
예시) 역순 문자열 만들기, 실행취소, 웹 브라우저 방문기록
스택 코드 구현
#Queue
큐는 데이터가 입력되면 입력되는 순서대로 쌓이고, 먼저 들어온 것부터 먼저 사용하는 자료구조다.
선입선출방식(First In First Out)FIFO형이라고 한다. 데이터를 넣는 것을 ENQUEUE, 데이터를 꺼내는 것을
DEQUEUE라고 한다
큐는 컴퓨터 안에 여러 개의 프로세스가 수행 중인데, 새로운 프로세스가 수행되어야 하는 경우 기존에 수행되던 프로세스 중에서 가장
먼저 메모리에 올라온 프로세스가 아웃되고(실행), 새로운 프로세스를 메모리에 올리게 된다. 이 경우 운영체제는 현재 수행 중인 프로세스를 큐의 형태로 관리한다.
큐 코드 구현
class Queue {
constructor() {
this._arr = [];
}
enqueue(item) {
this._arr.push(item);
}
dequeue() {
return this._arr.shift();
}
}
const queue = new Queue();
console.log(queue);
queue.enqueue(1);
console.log(queue);
queue.enqueue(2);
queue.enqueue(3);
queue.dequeue();// 1
console.log(queue);