[자료구조] Stack

Updated:

Stack (스택) - 자료구조

Stack의 특징

  • 데이터를 집어넣을 수 있는 선형(linear) 자료형
  • 나중에 집어넣은 데이터가 먼저 나옴. 후입선출LIFO(Last In First Out)
  • 데이터를 집어넣는 push, 데이터를 추출하는 pop , 맨 나중에 집어넣은 데이터를 peek등의 작업을 할 수 있다.

image

ADT 설명
top (프로퍼티) 현재 위치
length (함수) 스택에 포함된 요소 수 반환
clear (함수) 스택의 모든 요소 삭제
push (함수) 스택의 새 요소를 추가
pop (함수) 스택의 탑에 있는 요소를 반환(요소를 영구적으로 꺼냄)
peek (함수) 스택의 탑에 있는 요소 반환(요소를 제거하지않고 내용만 확인)
empty (함수) 스택에 요소가 있는지 여부를 파악

스택은 서로 관계가 있는 여러 작업을 연달아 수행하면서 이전의 작업을 저장할 필요가 있을때 사용됨

stack 구현

//스택 생성자 함수
function Stack() {
    this.dataStore = []; //스택요소를 저장하는 배열
    this.top = 0;
    this.push = push;
    this.pop = pop;
    this.peek = peek;
    this.clear = clear;
    this.length = length;
}
//push
function push(element) {
    this.dataStore[this.top++] = element;
    // 현재 top위치의 새요소를 추가한다음 top증가
}
//pop
function pop() {
    return this.dataStore[--this.top];
    //스택의 탑위치에 있는 요소를 반환하고 top변수를 감소
}
//peek
function peek() {
    return this.dataStore[this.top - 1];
}
//length
function length() {
    return this.top;
}
//clear
function clear() {
    this.top = 0;
    // top 변수를 0으로 설정하면 스택전체 요소가 삭제
   }
//구현 테스트
var s = new Stack();
s.push("하나");
s.push("");
s.push("");
console.log("length" + s.length()); //length 3
console.log(s.peek());  // 셋
s.pop();
console.log(s.peek());  // 둘



출처

Leave a comment