상세 컨텐츠

본문 제목

3. 스택(stack)

CS전공 지식/2. 자료구조와 알고리즘

by 본투비곰손 2023. 7. 7. 22:31

본문

728x90

스택의 개념

단순한 규칙을 가지고 있는 리스트 먼저 들어간 데이터가 나중에 나온다.

스택 구현

지난 배열에서 작성했던 LinkedList를 사용하면 쉽게 작성 할 수 있다.

import { LinkedList } from './LinkedList.mjs';

class Stack {
	constructor() {
		this.list = new LinkedList();
	}
	push(data) {
		this.list.insertAt(0, data);
	}
	pop() {
		try {
			return this.list.deleteAt(0);
		} catch (e) {
			return null;
		}
	}
	peek() {
		return this.list.getNodeAt(0);
	}
	isEmpty() {
		return this.list.count == 0;
	}
}

export { Stack };

아래와 같이 테스트 해준다.

import { Stack } from './Stack.mjs';

let stack = new Stack();

console.log('===== 첫번째 출력 =====');
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
console.log(stack.pop().data);
console.log(stack.pop().data);
console.log(stack.pop().data);
console.log(stack.pop().data);

console.log('===== 두번째 출력 =====');
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
console.log(stack.peek().data);
stack.pop();
console.log(stack.peek().data);
console.log(`isEmpty: ${stack.isEmpty()}`);
stack.pop();
stack.pop();
stack.pop();
console.log(`isEmpty: ${stack.isEmpty()}`);
console.log(stack.pop());

결과는 다음과 같다

===== 첫번째 출력 =====
4
3
2
1
===== 두번째 출력 =====
4
3
isEmpty: false
isEmpty: true
null
728x90

'CS전공 지식 > 2. 자료구조와 알고리즘' 카테고리의 다른 글

7. 셋 (set)  (0) 2023.07.13
6. 해시 테이블(HashTable)  (0) 2023.07.12
5. 덱(deque)  (0) 2023.07.11
4. 큐(Queue)  (0) 2023.07.10
2. 배열과 연결 리스트  (0) 2023.07.06

관련글 더보기