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;
}
'programming > java' 카테고리의 다른 글
[java] 비트쉬프트연산자로 부분집합 출력, 갯수세기 (0) | 2021.01.19 |
---|---|
[java] JDBC (0) | 2021.01.05 |
[java] 선택정렬 (0) | 2021.01.01 |
[java] Cipher암호화하여 문자열 출력하기 (0) | 2021.01.01 |
[java] split, trim (0) | 2021.01.01 |
댓글