1. Stack

·2022년 11월 22일
1
post-thumbnail

1. 스택이란?

자료 입출력이 한방향에서만 이뤄지는 자료구조로 가장 마지막에 입력한 데이터를 꺼내는 후입선출(Last in First Out) 형태를 띄고있다.
속도가 빠르다는 장점을 가지고 있다.

긴 원통에 담긴 프링글스를 먹는 방법과 같다!
공장에서 맨 마지막에 들어간 감자칩은 제일 먼저 먹힌다!! 🥔

2. 스택 함수

  • push() : 스택 맨 위 데이터로 top이 가르키는 자리에 메모리 생성하여 데이터를 추가
  • pop() : 스택 맨 위 데이터 삭제(비어있을시 연산 정의 불가능)
  • peek() : 스택의 마지막 데이터를 리턴
  • size () : 사이즈 구하기
  • top () : 스택 가장 첫번째 데이터 반환(비어있을시 연산 정의 불가능)
  • empty() : 비어있으면 1, 그렇지 않으면 0 을 반환
  • clear() : 스택 비우기
  • length() : 스택 길이를 반환

주의 ) 스택은 추상적 자료구조 이므로 자료 자체의 형태와 그 자료와 관계된 연산들을 수학적으로만 정의한 것을 의미하며 구현 세부사항은 정의하지 않는다.
즉, 후입선출의 형태만 갖춘다면 무엇이든 '스택'이라고 부를수 있다.

3. 활용할 수 있는 곳

  • ctrl+z 같은 페이지 뒤로가기
  • 웹브라우저 이전으로 돌아가기

4. 시간복잡도

(시간 복잡도는 데이터의 개수가 증가함에 따라 알고리즘 규모가 얼마나 커지는지 알려준다.)

삽입 O(1)
삭제 O(1)
탐색 O(n)

5. 예제

function Stack(max_size){
    //배열 사이즈 지정
    const size = max_size;
    //맨 위에 값 지정
    let top = 0;
    let array = [];
    
    return{
        // 제일 위 데이터 제거
        pop(){
             if(top==0){
                console.log("stack is empty");
            }else{
                let temp = array[top];
                top--;
                return temp;
            }
        },
    
        push(item){
            if(size > top){
                top++;
                return array[top] = item;
            }else{
                console.log(new Error("stack is full"));
            }
        },
        peek(){
            return array[top];
        }
    }
  
}

var a = Stack(5);

///결과
var a = Stack(5);

a.push(1);
a.push(2);
a.push(3);
a.push(4);
a.push(5);
console.log(a.pop()); // 5
console.log(a.peek()); // 4

참고자료

1번 링크
2번 링크
시간복잡도 참고 자료 링크

profile
기록하는 개발자가 되자!

0개의 댓글

관련 채용 정보