programming/java
[java] 자료구조 스택 코드 구현
몽구스_
2021. 1. 5. 01:18
728x90
반응형
스택이란,
LIFO(후입선출)의 형태를 가진 자료구조이다.
쉽게 말해 스택에 항목이 쌓이는 형태를 말한다.
top은 제일 위에 있는 항목이자 제일 나중에 들어간 항목을 가리킨다.
그러므로 스택이 빈 상태는 top이 -1이다.
pop은 제일 위의 항목을 빼내는 함수이고,
peek는 제일 위의 항목을 빼지 않고 엿보는 함수이다.
public class StackTest{
public static void main(String[] args){
MyStack stack = new MyStack(10);
if(stack.isEmpty()){
System.out.println("스택이 비어있습니다.");
}
for (int i = 1; i <= 10; i++) {
stack.push(i);
}
if(stack.isFull()){
System.out.println("스택이 가득 찼습니다.");
}
System.out.println("최상위 숫자 : " + stack.peek());
System.out.println("최상위에서 꺼낸 숫자 : " + stack.pop());
System.out.println("최상위에서 꺼낸 숫자 : " + stack.pop());
System.out.println("");
System.out.println("== 스택 리스트 ==");
for (int i = 1; i <= 10; i++) {
int num = stack.pop();
if(num != -1)
System.out.println(num);
}
}
}
class MyStack{
private int[] stack;
private int top = -1;
public MyStack() {
stack = new int[10];
}
public MyStack(int i) {
stack = new int[i>0?i:10];//i가 0보다 클경우는 i가 배열의 크기, 아닐 경우 10으로
}
public int peek() {
return stack[top];
}
public int pop(){
if(isEmpty())
return -1;
else {
int p = stack[top];
top--;
return p;
}
}
public void push(int i) {
if(isFull())
System.out.println("스택이 꽉 찼습니다.");
else {
top++;
stack[top] = i;
}
}
public boolean isEmpty() {
if(top == -1)
return true;
return false;
}
public boolean isFull() {
if(top == stack.length-1)
return true;
return false;
}
728x90
반응형