스택(Stack)
한 쪽 에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out) 형식의 자료 구조
구현 class
public class Stack {
private final int [] stackList;
private final int stackSize;
private int stackPointer;
public Stack(int stackSize) {
this.stackList = new int[stackSize];
this.stackPointer = -1;
this.stackSize = stackSize;
}
public void push(int data){
if(stackSize-1 ==stackPointer){
System.out.println("더 이상 추가할 수 없음");
}else {
stackList[++stackPointer] = data;
}
}
public int pop(){
if(stackPointer ==-1){
System.out.println("요소를 먼저 추가해주세요");
return 0;
}else {
int i = stackList[stackPointer];
stackPointer--;
return i;
}
}
}
Test 코드
class StackTest {
@Test
@DisplayName("요소 추가")
void stack_add(){
Stack stack = new Stack(2);
stack.push(1);
assertThat(stack.pop()).isEqualTo(1);
}
@Test
@DisplayName("요소 꺼내기")
void stack_pop(){
int i = 1;
Stack stack = new Stack(2);
stack.push(10);
stack.push(i);
int pop = stack.pop();
assertThat(pop).isEqualTo(i);
}
}
'자료구조' 카테고리의 다른 글
[JAVA] Tree 이진트리 구현 (5) | 2020.12.15 |
---|---|
[JAVA] Queue 란 ? Queue 구현해보기 (0) | 2020.12.06 |
[Java] LinkedList 란? (LinkedList 구현해보기) (0) | 2020.12.06 |