MJay

스택 (Stack) 본문

Programming/Data Structure

스택 (Stack)

MJSon 2017. 2. 17. 17:45

스택이란

제한적으로 접근할 수 있는 나열 구조이다. 접근 방법은 언제나 목록의 끝에서만 일어난다.

LIFO-> Last in First Out으로 되어 있다.

자료를 넣는 걸 Push

자료를 빼는 걸 Pop이라고 한다.

쓰임

컴퓨터에서 포인터라고 하는 자료의 위치 표시자와 넣고 빼는 명령어를 사용해서 스택을 이용한다. 주로 함수를 호출할 때 인수의 전달 등에 이용된다. LIFO의 특징을 이용하여 역폴란드 표기법을 이용한 프로그래밍 언어인 포스등에서도 이용된다.

스택(Stack)의 동작   출처

 

(1) 삽입 – Push

스택(Stack)에 새로운 데이터를 삽입하는 작업을 push라고 한다. 이는 top 값을 하나 증가시킨 후 새로운 데이터를 삽입하도록 구현한다.

(2) 삭제(추출) – Pop

스택(Stack)에서 데이터를 제거하는 작업을 pop이라고 하며 이는 top이 가리키고 있는 자료를 삭제한 후 top 값을 하나 감소 시키도록 구현한다.

(3) 읽기 – peek

스택에서 top이 가리키는 데이터를 읽는 작업을 peek이라고 하며 top 값의 변화는 없다.

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;
}

}




'Programming > Data Structure' 카테고리의 다른 글

Linked List  (0) 2017.02.18
Binary Tree  (0) 2017.02.18
Trie(트라이)-자료구조  (0) 2017.02.18