컴퓨터공학 💻 도서관📚

Part2. 5-5 스택(Stack) 구현하기 본문

✅🌲강의 복습 노트/패캠 JavaSpring 강의,코드 복습

Part2. 5-5 스택(Stack) 구현하기

들판속초록풀 2025. 6. 23. 17:50

Stack의 특징

 

  • 맨 마지막 위치( top )에서만 자료를 추가,삭제, 꺼내올 수 있음 (중간의 자료를 꺼낼 수 없음)
  • Last In First Out ( 후입선출 ) 구조
  • 택배 상자가 쌓여있는 모양
  • 가장 최근의 자료를 찾아오거나 게임(바둑, 장기)에서 히스토리를 유지하고 이를 무를때 사용할 수 있음
  • 함수의 메모리는 호출 순서에 따른 stack 구조
  • 요소를 넣는 건  push() , 요소를 제거해서 꺼내는 건  pop() ,  데이터를 꺼내 보기만 하는 건  peek() 이라고 한다
  • jdk 클래스 : Stack
import array.MyArray;    // 이거 링크는 밑에 있다

public class MyArrayStack {

	int top;
	MyArray arrayStack;    // 배열로 스택을 구현
	
	public MyArrayStack()
	{
		top = 0;
		arrayStack = new MyArray();
	}
	
	public MyArrayStack(int size)
	{
		arrayStack = new MyArray(size);
	}
	
	public void push(int data)
	{
		if(isFull()){          // 추가 불가능 (배열인 경우는 꽉 차 있는지 확인해줘야 한다, 연결 리스트는 안 해도 된다.)
			System.out.println("stack is full");
			return;
		}
		
		arrayStack.addElement(data);  // array 클래스에서 만든 거
		top++;
	}
	
	public int pop()
	{
		if (isEmpty()){
			System.out.println("stack is empty");
			return MyArray.ERROR_NUM;       // array 클래스에서 있는 에러 넘버
		}
		return arrayStack.removeElement(--top);  // 인덱스를 넣어야 하니까 1 빼고 top에 넣기
		
	}
	
	public int peek()
	{
		if (top == 0){
			System.out.println("stack is empty");
			return MyArray.ERROR_NUM;
		}
		return arrayStack.getElement(--top);
	}
	
	public int getSize()
	{
		return top;
	}
	
	public boolean isFull()       // Full 확인 메서드
	{
		if(top == arrayStack.ARRAY_SIZE){ //요소가 추가될 때마다 top++ 했기에 이렇게 비교한다.
			return true;
		}
		else return false;
	}
	
	public boolean isEmpty()      // Empty 확인 메서드
	{
		if (top == 0){
			return true;
		}
		else return false;
	}
	
	public void printAll()
	{
		arrayStack.printAll();      // array 클래스 메서드
	}
}
public class MyArrayStackTest {

	public static void main(String[] args) {

		MyArrayStack stack = new MyArrayStack(3);
		
		stack.push(10);
		stack.push(20);
		stack.push(30);
		stack.push(40);
		
		stack.printAll();
		
		System.out.println("top element is " + stack.pop());
		stack.printAll();
		System.out.println("stack size is " + stack.getSize());
	}
}

 

 

 

참고) MyArray 클래스

Part2. 5-3 배열(Array)  구현하기

 

Part2. 5-3 배열(Array) 구현하기

Array 의 특징 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조정해진 크기가 있음요소의 추가와 제거시 다른 요소들의 이동이 필요함배열의 i 번째 요소를 찾는 인덱스 연산이 빠름jdk 클

computer-science-library.tistory.com

 

Comments