Skip to content

스택 #
Find similar titles

Structured data

Category
Programming

스택(Stack) #

정의 #

Image

Stack이라는 단어는 차곡 차곡 쌓여진 더미를 의미하는데,
이는 가장 먼저 입력된 데이터가 가장 아래쪽에 쌓이고, 나중에 입력된 데이터는 그 위에 쌓이게 된다는 구조상의 특징이 마치 더미를 쌓아 올린 모습과 흡사하기 때문이다.

자료구조(Data Structure)의 한 종류로 후입선출(LIFO : List in Frist out)구조를 가지고 있다.
따라서 가장 먼저 들어간 데이터가 가장 끝부분에 위치하게 되는 구조이다.
이러한 특징으로 데이터 저장과 같은 기능에는 적합하나, 실시간 처리를 요하는 구조에서는 부적합한 자료구조이다.

사용되는 기능 #

작성하는 사람마다 다소 차이가 있지만 대부분 아래의 기능으로 스택을 구현하게 된다.

  1. peek 또는 top : stack의 가장 위에 있는 값(현재 값)을 반환한다.
  2. push : stack에 데이터를 입력한다.
  3. pop : stack에 데이터를 삭제한다.
  4. empty : stack에 데이터가 없으면 참(true), 없으면 거짓(false)으르 반환한다.

간단한 예시 #

아래는 JAVA로 작성한 예시이다.

public class ArrayStack {    
private int top;
private int maxSize;
private Object[] stackArray;

// 배열 스택 생성,  스택의 최대 크기로 생성
public ArrayStack(int maxSize){

    this.maxSize = maxSize;
    this.stackArray = new Object[maxSize];
    this.top = -1;
}

// 스택이 비어있는지 체크
public boolean empty(){
    return (top == -1);
}

// 스택이 꽉찼는지 체크
public boolean full(){
    return (top == maxSize-1);
}

// 스택에 item 입력
public void push(Object item){

    if(full()) throw new ArrayIndexOutOfBoundsException((top+1)+">=" + maxSize);

    stackArray[++top] = item;
}

// 스택의 가장 위의 데이터 반환
public Object peek(){

    if(empty()) throw new ArrayIndexOutOfBoundsException(top);

    return stackArray[top];
}

// 스택의 가장 위의 데이터 제거
public Object pop(){

    Object item = peek();

    top--;

    return item;
}
}

Incoming Links #

Related Data Sciences #

Suggested Pages #

0.0.1_20140628_0