자료구조 중 하나인 Stack을 자바로 구현한 코드이다. int 타입을 처리하는 stack이다.
package datastructure.stack.intstack;
public class IntStack {
private int max;
private int pointer;
private int[] stack;
public IntStack(int capacity) {
pointer = 0;
max = capacity;
try {
stack = new int[max];
} catch (OutOfMemoryError e) {
max = 0;
}
}
public int push(int value) {
if (pointer >= max) {
throw new OverflowIntStackException();
}
return stack[pointer++] = value;
}
public int pop() {
if (pointer <= 0) {
throw new EmptyIntStackException();
}
return stack[--pointer];
}
public int peek() {
if (pointer <= 0) {
throw new EmptyIntStackException();
}
return stack[pointer - 1];
}
public int indexOf(int x) {
for (int i = pointer - 1; i >= 0; i--) {
if (stack[i] == x) {
return i;
}
}
return -1;
}
public void clear() {
pointer = 0;
}
public int capacity() {
return max;
}
public int size() {
return pointer;
}
public boolean isEmpty() {
return pointer <= 0;
}
public boolean isFull(){
return pointer>=max;
}
public void dump(){
if (pointer<=0){
System.out.println("스택이 비어 있습니다.");
return;
}
for (int i =0; i< pointer;i++){
System.out.println(stack[i]);
}
}
}
public class IntStackMain {
public static void main(String[] args) {
IntStack stack = new IntStack(5);
// 스택에 값 추가
stack.push(10);
stack.push(20);
stack.push(30);
stack.push(40);
stack.push(50);
// 스택 정보 출력
System.out.println("스택 크기: " + stack.size());
System.out.println("스택이 비어있는가? " + stack.isEmpty());
System.out.println("스택이 가득차있는가? " + stack.isFull());
// 스택에서 값 가져오기
int poppedValue = stack.pop();
System.out.println("꺼낸 값: " + poppedValue);
// 스택의 가장 위에 있는 값 확인
int topValue = stack.peek();
System.out.println("가장 위의 값: " + topValue);
// 스택에서 값의 인덱스 확인
int valueToFind = 30;
int index = stack.indexOf(valueToFind);
System.out.println(valueToFind + "의 인덱스: " + index);
// 스택 초기화
stack.clear();
// 스택 정보 출력
System.out.println("스택 크기: " + stack.size());
System.out.println("스택이 비어있는가? " + stack.isEmpty());
System.out.println("스택이 가득차있는가? " + stack.isFull());
}
}
실행 화면
반응형
'CS > 자료구조' 카테고리의 다른 글
배열 - 정의, 추상 자료형, 연산, 희소 행렬 (0) | 2023.11.18 |
---|---|
자료구조, 추상화의 개념, 자료구조와 알고리즘, 알고리즘의 개념과 조건 및 성능 (0) | 2023.11.18 |
pointer 방식 LinkedList 자바 구현 코드 (0) | 2023.06.18 |
ring 방식 int queue 자바 구현 코드 (0) | 2023.06.17 |
array 방식 int queue 자바 코드 구현 (0) | 2023.06.17 |