[자료구조] stack

YS_Study.log·2022년 3월 1일

Stack이란? (후입선출)

스택은 임시 기억 장치이며, 메모리 안 데이터들을 더욱 효율적으로 다루기 위해 만들어진 데이터 참조 방식이다.

  • 선형구조 : 자료를 구성하는 데이터를 순차적으로 나열한 형태
  • LIFO(Last In First Out) 방식 : 한 쪽 끝(top)에서만 데이터를 넣거나 뺄 수 있는 선형구조를 가졌으며, 먼저들어간 데이터가 가장 늦게 나오는 후입선출이라는 특징을 갖고 있다. (FILO(First In Last Out) 라고도 부른다.)

스택을 구현하는 대표적인 방법

  • 정적 1차원 배열
    - 장점 : 구현이 쉽다
    - 단점 : 들어올 크기를 미리 알아야한다.
  • 동적 연결리스트
    - 장점 : 크기를 몰라도 된다.
    - 단점 : 구현이 배열보다 어렵고, 메모리를 더 사용한다.

스택의 주요 속성

  • Top, peek : 제일 최근에 들어간 데이터, 최상위 데이터를 말한다. ( 최상위 데이터를 담는 변수같은 것이다.)

대표 메소드

  • pop() : 스택으로 부터 마지막에 들어간, 최상담에 위차한 데이터를 빼내는 함수
  • push() : 스택공간에 데이터를 집어넣는 함수

    예시)
    데이터 숫자 집어넣기 : 순서대로 push) 1-> 2-> 3
    데이터 숫자 제거하기(빼기) : 집어넣은 반대 순서대로 pop) 3-> 2 -> 1

스택 / LIFO 를 이용한 예

  • 실행취소command + z , 웹 브라우저 뒤로가기, 계산기 등이 있다.
  • 예시) 한가지 예를 들어 stack에 대해 쉽게 이해해본다. → 막힌 골목을 자동차들이 들어간다면?
    골목을 자료구조 Stack, 자동차는 데이터(data)로 비유할 수 있습니다.
  • 가장 일찍 들어간 자동차 → 가장 늦게에 나간다.
    다시 말해, 가장 늦게 들어간 자동차→ 가장 일찍 나간다.

Array을 활용하여 Stack으로 사용 예시)

* 상기하기 → 자료구조는 자료(데이터)를 다루는 구조 그 자체를 뜻하며, 구현하는 방식에는 제약이 없습니다.

- 배열로 자료구조 Stack 구현하기 → 후입선출 특징을 구현한다면?  ****
    

array.pop()

  • 뒤에서 부터 요소를 제거한다. → 가장 늦게 들어간 데이터가 가장 먼저 제거된다.
        // const array = new Array() 미리 정의된 Array 객체를 사용합니다.
        const stack = [];
        
        stack.push(1); // [1]
        stack.push(2); // [1, 2]
        stack.push(3); // [1, 2, 3]
        stack.push(4); // [1, 2, 3, 4]
        stack.push(5); // [1, 2, 3, 4, 5]
        
        console.log(stack); // [1, 2, 3, 4, 5]
        
        stack.pop(); // [1, 2, 3, 4]
        stack.pop(); // [1, 2, 3]
        
        console.log(stack); // [1, 2, 3]

코딩하는 거니 https://www.youtube.com/watch?v=Vfg6-AWGsCw&list=PLLcbGhhl4sQCiZxLuqDDDH6q-rc4wyaKe&index=7
코드스테이츠

profile
느리지만 조금씩 공부하는 중 입니다. 현재 1년 6개월차 신입입니다 ><!

0개의 댓글