컴퓨터공학 💻 도서관📚
Part2. 5-5 스택(Stack) 구현하기 본문
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) 구현하기
Array 의 특징 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조정해진 크기가 있음요소의 추가와 제거시 다른 요소들의 이동이 필요함배열의 i 번째 요소를 찾는 인덱스 연산이 빠름jdk 클
computer-science-library.tistory.com
'✅🌲강의 복습 노트 > 패캠 JavaSpring 강의,코드 복습' 카테고리의 다른 글
Part2. 5-7 무엇이든 담을 수 있는 제네릭(Generic) 프로그래밍 (자료형 매개변수 T) (0) | 2025.06.24 |
---|---|
Part2. 5-6 큐(Queue) 구현하기 (0) | 2025.06.23 |
Part2. 5-4 연결 리스트 (LinkedList) 구현하기 (0) | 2025.06.21 |
Part2. 5-3 배열(Array) 구현하기 (0) | 2025.06.20 |
Part2. 5-1, 2 여러가지 자료구조에 대해 알아봅시다. (4) | 2025.06.20 |
Comments