MJay
스택 (Stack) 본문
스택이란
제한적으로 접근할 수 있는 나열 구조이다. 접근 방법은 언제나 목록의 끝에서만 일어난다.
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 값의 변화는 없다.
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 |