스택

hyuri·2023년 11월 30일
0

코딩테스트 연습

목록 보기
70/70

스택

Last In First Out이라는 개념을 가진 선형 자료구조

(Ex: 프링글스를 생각하면 편함)

Push와 Pop으로 이루어져 있음

Empty Stack에서 Push를 통해 저장하고 Pop으로 꺼냄

function sum (a,b) { // sum 함수가 실행하면서 스택이 쌓임
    return a + b; 
} // sum 함수가 종료되어 스택이 제거 됨
function print(value) { // print 함수가 실행하면서 스택이 쌓임
    console.log(value); // console.log(value)가 실행되면서 스택이 쌓임 [이때 스택 1. print 함수, 2. console.log 함수]
} // log 출력 이후 스택 제거
print(sum(5,10)); // print 출력되어 스택 제거
  1. Array로 표현이 가능
  • 순차적으로 삽입되고 마지막을 제거함.
  • 중간요소 추가 및 삭제 로직이 사용되지 않아 유리함.
const stack = [];

// Push
stack.push(1);
stack.push(2);
stack.push(3);
console.log(stack); // [1, 2, 3]

// Pop
stack.pop();
console.log(stack); // [1, 2]

// Get Top
console.log(stack[stack.length - 1]); // 2
  1. Linked List로 표현 가능
  • 연결리스트의 Head가 Pop.
    class Node {
        constructor(value) {
            this.value = value;
            this.Node = null;
        }
    }
    
    class Stack {
        constructor() {
            this.top = null;
            this.size = 0;
        }
    
        push(value) {
            const node = new Node(value);
            node.next = this.top;
            this.top = node;
            this.size += 1;
        }
    
        pop() {
            const value = this.top.value;
            this.top = this.top.next;
            this.size -= 1;
            return value;
        }
    
        size() { 
            return this.size;
        }
    }
    
    const stack = new Stack()
    stack.push(1);
    stack.push(2);
    stack.push(3);
    console.log(stack.pop()); // 3
    stack.push(4);
    console.log(stack.pop()); // 4
    console.log(stack.pop()); // 2
profile
개발자가 되고 싶은 지망생

0개의 댓글