티스토리 뷰

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 하라는 뜻이다.

 

'Java 자료구조' 카테고리의 다른 글

2) LinkedList 링크드리스트  (0) 2022.07.18
1) Array 배열  (0) 2022.07.18
자바 자료구조 (Array , LinkedList , Stack , Queue)  (0) 2022.07.18