스택 - 구현
스택(Stack) 구현: 자바스크립트를 활용한 데이터 처리
스택은 데이터를 FILO(First In Last Out) 방식으로 처리하는 선형 자료구조입니다. 스택은 데이터의 삽입(push), 삭제(pop), 최상위 데이터 확인(peek), 비어있는지 확인(isEmpty) 등의 작업을 할 수 있습니다. 연결 리스트를 사용하여 스택을 구현할 경우, 이러한 작업들이 매우 효율적으로 수행될 수 있습니다.
1. 스택의 추상 자료형 구현
스택의 기본적인 기능을 아래와 같이 구현할 수 있습니다. 이 예에서는 연결 리스트(LinkedList)를 사용하여 스택을 구현하였습니다.
// Stack.mjs
import { LinkedList } from "./LinkedList.mjs";
class Stack {
constructor() {
this.list = new LinkedList();
}
// 데이터 삽입
push(data) {
this.list.insertAt(0, data);
}
// 데이터 제거
pop() {
if (this.isEmpty()) {
return null;
}
const node = this.list.deleteAt(0);
return node ? node.data : null;
}
// 최상위 데이터 확인
peek() {
if (this.isEmpty()) {
return null;
}
return this.list.getNodeAt(0).data;
}
// 스택이 비어있는지 확인
isEmpty() {
return this.list.count === 0;
}
}
export { Stack };
2. 스택의 사용
스택의 기능을 테스트하기 위해 다음과 같은 테스트 코드를 작성할 수 있습니다.
// test_stack.mjs
import { Stack } from "./Stack.mjs";
const stack = new Stack();
console.log("스택에 데이터 추가:");
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
console.log("스택의 최상위 데이터 확인 (peek):");
console.log(stack.peek()); // 출력: 4
console.log("스택에서 데이터 제거 (pop):");
while (!stack.isEmpty()) {
console.log(stack.pop()); // 출력: 4, 3, 2, 1
}
console.log("스택이 비어있는지 확인 (isEmpty):");
console.log(stack.isEmpty()); // 출력: true
스택은 데이터를 관리하는 데 특히 유용한 자료구조로, 후입선출(LIFO)의 특성을 가지고 있어서 호출 스택, 브라우저 방문 기록, 괄호 검사 등 다양한 상황에서 활용될 수 있습니다. 연결 리스트를 기반으로 구현된 스택은 데이터의 동적인 추가 및 제거에 용이하며, 데이터 처리 과정에서 발생할 수 있는 다양한 시나리오를 효율적으로 처리할 수 있습니다.
'공부 > 그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)' 카테고리의 다른 글
큐 - 구현 (0) | 2024.01.28 |
---|---|
큐 - 개념 (0) | 2024.01.28 |
스택 - 개념 (0) | 2024.01.28 |
연결리스트 - 구현 (0) | 2024.01.28 |
연결리스트 - 개념 (0) | 2024.01.28 |