push, pop, peek, clear, isFull, isEmpty를 구현하라
import java.util.Scanner;
interface Stack {
public boolean isEmpty();
public boolean isFull();
public void push(char item);
public void pop();
public void peek();
public void clear();
}
class MyStack implements Stack {
int num;
int stackSize;
char[] stack;
public MyStack(int stackSize) {
num = 0;
this.stackSize = stackSize;
stack = new char[stackSize];
}
@Override
public boolean isEmpty() {
if (num == 0)
return true;
else
return false;
}
@Override
public boolean isFull() {
if (num >= stackSize)
return true;
else
return false;
}
@Override
public void push(char item) {
if (isFull()) {
System.out.println("스택이 가득 차 있습니다");
} else {
stack[num] = item;
System.out.println("추가된 문자 : " + stack[num]);
num++;
}
}
@Override
public void pop() {
if (isEmpty()) {
System.out.println("스택이 비어있습니다");
} else {
System.out.println("삭제된 문자 : " + stack[num - 1]);
stack[num - 1] = '0';
num--;
}
}
@Override
public void peek() {
if (isEmpty()) {
System.out.println("스택이 비어있습니다");
} else {
System.out.println("최상위 문자 : " + stack[num - 1]);
}
}
@Override
public void clear() {
if (num == 0) {
System.out.println("스택이 비어있습니다");
} else {
for (int i = 0; i < num; i++) {
stack[i] = '0';
}
num = 0;
System.out.println("클리어 성공");
}
}
public void showStack() {
if (num == 0) {
System.out.println("스택이 비어있습니다");
} else {
System.out.print("현재 스택 : ");
for (int i = 0; i < num; i++) {
System.out.print(stack[i] + " ");
}
System.out.println();
}
}
}
public class StackTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("스택 사이즈 : ");
int stackSize = sc.nextInt();
MyStack ms = new MyStack(stackSize);
int select = 0;
char pushC = '0';
boolean tf = true;
while (tf) {
System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
System.out.println("1.push | 2.pop | 3.peek | 4.isEmpty | 5.isFull | 6.clear | 7.showStack");
System.out.print("번호 선택 : ");
select = sc.nextInt();
System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
switch (select) {
case 1:
System.out.print("글자 입력 : ");
pushC = sc.next().charAt(0);
ms.push(pushC);
break;
case 2:
ms.pop();
break;
case 3:
ms.peek();
break;
case 4:
if (ms.isEmpty()) {
System.out.println("스택이 비어있습니다");
} else {
System.out.println("스택에 데이터가 있습니다");
}
break;
case 5:
if (ms.isFull()) {
System.out.println("스택이 가득차있습니다");
} else {
System.out.println("스택이 가득차지 않았습니다");
}
break;
case 6:
ms.clear();
break;
case 7:
ms.showStack();
break;
default:
System.out.println("숫자를 다시 입력해 주세요");
}
}
}
}