개념 설명
▶ 스택 (Stack)
- 정의: 스택은 뒤로 넣고 뒤로 금방하는 (Last-In First-Out, LIFO) 구조.
- 복소 가능 작업:
- push: 인접 값을 스택의 끝에 추가
- pop: 스택의 끝에서 값 개발 (제거)
- 특징:
- 매우 간단하고 다른 자료구 구성의 기원이 되기도 함
- 불필요한 값 감지 불가 (LIFO)
▶ 큐 (Queue)
- 정의: 큐는 지난시점에 넣고 지나지 않은 순서대로 가지고 가는 (First-In First-Out, FIFO) 구조.
- 복소 가능 작업:
- enqueue: 값을 큐 끝에 추가
- dequeue: 큐 첫번째 값 개발 (제거)
- 특징:
TypeScript로 스택 구현
// 스택 구현
class Stack<T> {
private items: T[] = [];
// push: 값을 뒤에 넣기
push = (item: T): void => {
this.items.push(item);
};
// pop: 뒤에서 값 개발
pop = (): T | undefined => {
return this.items.pop();
};
// peek: 최근 값
peek = (): T | undefined => {
return this.items[this.items.length - 1];
};
// isEmpty: 빈 상태 확인
isEmpty = (): boolean => {
return this.items.length === 0;
};
}
TypeScript로 큐 구현
// 큐 구현
class Queue<T> {
private items: T[] = [];
// enqueue: 끝에 값 추가
enqueue = (item: T): void => {
this.items.push(item);
};
// dequeue: 첫번째 값 개발
dequeue = (): T | undefined => {
return this.items.shift();
};
// front: 첫번째 값 확인
front = (): T | undefined => {
return this.items[0];
};
// isEmpty: 빈 상태 확인
isEmpty = (): boolean => {
return this.items.length === 0;
};
}
사용 예제
const stack = new Stack<number>();
stack.push(10);
stack.push(20);
console.log(stack.pop()); // 20
const queue = new Queue<string>();
queue.enqueue("A");
queue.enqueue("B");
console.log(queue.dequeue()); // "A"
1주차 숙제