Java 자료구조
3) 스택 자료구조 stack
산도리
2022. 7. 24. 15:36
* 타 블로그 글을 참조 한 것이 아닌 독학을 통해 이해한 내용을 작성한 것이기 때문에 , 지적은 성대히 환영합니다 ! *
스택 자료구조에 대해서 알아보겠다.
스택 자료구조의 대표적인 특징은 후입선출의 개념이다.
그림처럼 A부터 D 까지 차례대로 쌓인다. 물론 실제 데이터가 저런 모양으로 쌓이는건 아니고 이해를 돕기위해 저렇게
그린다.
맨 위의 요소를 top 이라 부른다.
차례대로 쌓이는 구조이기 때문에 top 에서만 요소를 추가하고 뺄 수 있다는 점을 명심해야한다.
요소를 추가할 땐 push , 뺄 땐 pop 을 사용하여 요소를 제거한다.
이러한 자료구조는 가장 최근의 자료를 찾아오거나 게임에서 히스토리를 유지하고 이를 무를때 사용할 수 있다.
요소를 추가하고 빼는 코드를 봐보자.
먼저 스택 배열에 조건을 주기 위해 isFull 메서드를 만든다.
public boolean isFull() {
if(top == arrayStack.ARRAY_SIZE) {
return true;
}
else return false;
}
top 즉 맨 마지막 요소가 ARRAY_SIZE 와 동일 하다면 (꽉 찼다면)
true 를 반환한다.
다음은 추가코드다.
push 추가 코드.
public void push(int data) {
if(isFull()) {
System.out.println(" stack is full.");
return ;
}
else arrayStack.addElement(data);
top++;
}
배열이 꽉 찼는지 확인하고
아니라면 배열에 배열에 값을 추가하고 (addElement) ,
top 을 ++ 한다.
이유는 isFull 을 확인해보라.
다음은 pop 코드다.
public void pop() {
if(isEmpty()) {
System.out.println("stack is empty.");
return;
}
else arrayStack.removeElement(--top);
}
isEmpty는 배열에 데이터가 하나도 없는지 확인하는 메서드다.
--top 은 top 에서 - 를 하고 그다음 count -1 하라는 뜻이다.