import java.util.Scanner;
interface Stack{
int length();
int capacity();
String pop();
boolean push(String val);
}
class StringStack implements Stack{
private String[] element; //스택의 저장 메모리
private int tos; //index,top of stack
public StringStack(int capacity) {
// TODO Auto-generated constructor stub
element = new String[capacity];
tos = -1;
}
@Override
public int length() {
// TODO Auto-generated method stub
return tos+1;
}
@Override
public int capacity() {
// TODO Auto-generated method stub
return element.length;
}
@Override
public String pop() {
// TODO Auto-generated method stub
if(tos == -1) return null;
String s = element[tos];
tos--;
return s;
}
@Override
public boolean push(String str) {
// TODO Auto-generated method stub
if(tos == element.length-1)
return false; // 스택이 다 찼음
else {
tos++;
element[tos] = str; // 요소 스택에 저장 후 스택 포인터 증가
return true;
}
}
}
public class StackApp {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.print("총 스택 저장 공간의 크기 입력 >> ");
int size = sc.nextInt();
StringStack ss = new StringStack(size);
while(true) {
System.out.print("문자열 입력 >> ");
String str = sc.next();
if(str.equals("그만")) break;
boolean res = ss.push(str); //스택에 저장
if(res == false) {
System.out.println("스택이 꽉차서 푸시 불가!");
}
}
System.out.print("스택에 저장된 모든 문자열 팝 : ");
int len = ss.length();
for(int i=0;i<size;i++) {
System.out.print(ss.pop()+" ");
}
sc.close();
}
}
결과
총 스택 저장 공간의 크기 입력 >> 3
문자열 입력 >> hello
문자열 입력 >> sunny
문자열 입력 >> smile
문자열 입력 >> happy
스택이 꽉차서 푸시 불가!
문자열 입력 >> inch
스택이 꽉차서 푸시 불가!
문자열 입력 >> 그만
스택에 저장된 모든 문자열 팝 : smile sunny hello
…
여기서부터 막히기 시작한다.
정답지 보면서 보강했다
'명품JAVA프로그래밍 > 5장 상속' 카테고리의 다른 글
[명품JAVA프로그래밍] 5장 실습문제 11번 (0) | 2022.01.17 |
---|---|
[명품JAVA프로그래밍] 5장 실습문제 10번 (0) | 2022.01.13 |
[명품JAVA프로그래밍] 5장 실습문제 8번 (0) | 2022.01.12 |
[명품JAVA프로그래밍] 5장 실습문제 7번 (0) | 2022.01.12 |
[명품JAVA프로그래밍] 5장 실습문제 6번 (0) | 2022.01.12 |